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(); 
            } 
         }

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用以下步骤在C# WinForm中动态绑定ComboBox下拉列表: 1. 在您的WinForm中添加一个ComboBox控件。 2. 在您的代码中,使用ADO.NET连接到您的数据库。 3. 编写一个SQL查询语句来检索您需要添加到ComboBox下拉列表中的数据。 4. 使用DataAdapter和DataSet对象来执行查询并将结果保存在一个DataTable对象中。 5. 使用ComboBox控件的DataSource属性将DataTable对象与ComboBox控件绑定。 6. 使用ComboBox控件的DisplayMember属性将您希望显示在ComboBox下拉列表中的数据列的名称指定为字符串。 7. 使用ComboBox控件的ValueMember属性将您希望在选择ComboBox下拉列表中的项目时返回的值的数据列的名称指定为字符串。 以下是一个示例代码,可以将ComboBox下拉列表动态绑定到数据库中的数据: ```csharp using System.Data.SqlClient; // 创建数据库连接 SqlConnection connection = new SqlConnection("Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;"); // 创建SQL查询语句 string query = "SELECT ID, Name FROM MyTable"; // 创建DataAdapter和DataSet对象 SqlDataAdapter adapter = new SqlDataAdapter(query, connection); DataSet dataSet = new DataSet(); // 执行查询并将结果保存在DataTable对象中 adapter.Fill(dataSet, "MyTable"); // 将DataTable对象与ComboBox控件绑定 comboBox1.DataSource = dataSet.Tables["MyTable"]; // 指定ComboBox控件中显示的数据列的名称 comboBox1.DisplayMember = "Name"; // 指定在选择ComboBox下拉列表中的项目时返回的值的数据列的名称 comboBox1.ValueMember = "ID"; ``` 当您运行此代码时,ComboBox下拉列表将显示从数据库中检索到的所有项目的名称,并且选择任何项目时,ComboBox控件将返回该项目的ID作为值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值