阅读背景:

C# WinForm ComboBox下拉菜单如何切换鼠标移动到某项的高亮背景色

来源:互联网 

废话少说,上源码:

        
        public void cbDrawItem(object sender, DrawItemEventArgs e)
        {
            //匿名方法
            Func<Color> SetBackColor = () =>
            {
                if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
                {
                    return Color.Lime; //高亮背景色
                }
                return e.BackColor;
            };

            if (e.Index < 0)
            {
                return;
            }
            var cb = sender as ComboBox;
            if (cb != null)
            {
                //e.DrawBackground(); 反编译System.Windows.Forms.dll,得知DrawBackground的方法源码如下
                var brush = new SolidBrush(SetBackColor());
                e.Graphics.FillRectangle(brush, e.Bounds);
                brush.Dispose();

                var item = cb.Items[e.Index] as SearchItem;
                var sb = new SolidBrush(Color.Blue);

                if (sb != null) 
                { 
                   e.Graphics.DrawString(item.Text, e.Font, sb, e.Bounds.X, e.Bounds.Y + 2); //选项前景色 
                } 
                e.DrawFocusRectangle(); 
            } 
         }        
        public void cbD



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: