C#如何更改组合框项目的颜色
本文关键字:项目 颜色 组合 何更改 | 更新日期: 2023-09-27 18:29:46
winform上的组合框,组合框填充数据表三列(id、名称、状态)
combobox.displaymember = "name";
combobox.valuemember = "id";
我想更改状态列的组合框项目的颜色
请提供建议。
我能做到这一点,但有一个错误。先走几步。
- 在表单中添加组合框(comboBox1)
- 将comboBox1的
DrawItem
事件更改为comboBox1_DrawItem
(我们的方法如下) - EDIT:将组合框1的
Draw Mode
属性更改为OwnerDrawFixed
或OwnerDrawVariable
-
执行
comboBox1_DrawItem
。注意,我在ComboBoxValue.Status
上切换了画笔private void comboBox1_DrawItem(object sender, DrawItemEventArgs e) { Brush brush; var g = e.Graphics; var rect = e.Bounds; var n = ""; var f = new Font("Arial", 9, FontStyle.Regular); switch (((ComboBoxValue)((ComboBox)sender).SelectedItem).Status) { case "one": brush = Brushes.Red; break; case "two": brush = Brushes.Green; break; default: brush = Brushes.White; break; } if (e.Index >= 0) { n = ((ComboBoxValue)((ComboBox)sender).SelectedItem).Name; } g.FillRectangle(brush, rect.X, rect.Y,rect.Width, rect.Height); g.DrawString(n, f, Brushes.Black, rect.X, rect.Y); }
-
我使用了自己类的IList作为数据源。你的就不一样了。
public class ComboBoxValues : System.Collections.ObjectModel.Collection<ComboBoxValue> { public ComboBoxValues() { this.Add(new ComboBoxValue { Name = "chad", Id = 123, Status = "one" }); this.Add(new ComboBoxValue { Name = "different chad", Id = 123, Status = "two" }); } } public class ComboBoxValue { public string Name { get; set; } public int Id { get; set; } public string Status { get; set; } }
-
设置
DataSource
comboBox1.DataSource = new ComboBoxValues(); comboBox1.DisplayMember = "Name"; comboBox1.ValueMember = "Id";
正如你很快就会看到的那样,这个错误是,由于某种原因,颜色似乎只有在你把鼠标放在它们上面之后才会改变。也许在我回到这之前,其他人会意识到这个错误。祝你好运