ListView设置选中项颜色变换

2015-12-21 12:06:31  访问(1926) 赞(0) 踩(0)


        /// <summary>
        /// ListView设置选中项颜色变换
        /// </summary>
        /// <param name="lv"></param>
        /// <param name="idx"></param>
        /// <param name="isSelected"></param>
        public void ListViewSetItemSelectedColor(ListView lv, int idx, bool isSelected)
        {
            if (idx < 0)
                return;

            int iCount = lv.Items.Count;

            if (iCount == 0)
                return;

            if (idx >= iCount)
                return; 

            System.Drawing.Color ForeColor = System.Drawing.SystemColors.WindowText;
            System.Drawing.Color BackColor = System.Drawing.SystemColors.Window;
            System.Drawing.Color CompareColor = System.Drawing.SystemColors.Window;

            if (isSelected)
            {
                ForeColor = System.Drawing.SystemColors.Window;
                CompareColor = System.Drawing.SystemColors.WindowText;
                BackColor = System.Drawing.SystemColors.Highlight;
            }

            ListViewItem lvItem = lv.Items[idx];

            if (lvItem.UseItemStyleForSubItems)
            {
                lvItem.ForeColor = ForeColor;
                lvItem.BackColor = BackColor;
            }
            else
            {
                int columnCount = lv.Columns.Count;

                for (int i = 0; i < columnCount; ++i)
                {
                    // if (lvItem.SubItems[i].ForeColor == CompareColor) //
                    if (ColorCompare(lvItem.SubItems[i].ForeColor, CompareColor))
                    {
                        lvItem.SubItems[i].ForeColor = ForeColor;
                    }

                    lvItem.SubItems[i].BackColor = BackColor;
                }
            }

        }

        /// <summary>
        /// 颜色值比较
        /// </summary>
        /// <param name="one"></param>
        /// <param name="two"></param>
        /// <returns></returns>
        public bool ColorCompare(System.Drawing.Color one,System.Drawing.Color two)
        {
            if (one == null)
            {
                if (two == null)
                    return true;
                else
                    return false;
            }

            if (two == null)
                return false;

            if (one.A != two.A)
                return false;

            if (one.R != two.R)
                return false;

            if (one.G != two.G)
                return false;

            if (one.B != two.B)
                return false;

            return true;
        }


标签:ListView设置选中项颜色变换 

上一条:

下一条:


 

相关评论

评论加载中……
 

发表评论

类型:
内容:
  (Alt+Enter)