gpt4 book ai didi

c# - 更改 WinForms ComboBox 的选择颜色

转载 作者:行者123 更新时间:2023-11-30 13:32:47 26 4
gpt4 key购买 nike

所有,我已经深入了解了,但似乎找不到我要找的东西。我想更改 ComboBoc 控件的选择颜色(理想情况下不必对控件进行子类化)。我虽然执行以下操作会起作用,但此事件甚至没有触发

private void comboBoxDb_DrawItem(object sender, DrawItemEventArgs e) 
{
ComboBox combo = sender as ComboBox;
e.Graphics.FillRectangle(new SolidBrush(combo.BackColor), e.Bounds);
string strSelectionColor = @"#99D4FC";
Color selectionColor =
System.Drawing.ColorTranslator.FromHtml(strSelectionColor);
e.Graphics.DrawString(combo.Items[e.Index].ToString(),
e.Font,
new SolidBrush(selectionColor),
new Point(e.Bounds.X, e.Bounds.Y));
}

但是这个事件甚至没有触发。我在这里做错了什么?

感谢您的宝贵时间。

编辑。尽管未触发是由于未正确设置 @Teppic 指出的 ComboBox 的 DrawMode 属性引起的,但这仍然没有达到我的要求。我想设置选择颜色,我上面所做的(我在这里屏蔽了名字)

NotWhatIsRequired

而我想更改控件的蓝色突出显示,如下所示。

enter image description here

最佳答案

将 ComboBox 控件的 DrawMode 属性设置为 OwnerDrawFixed(如果每个项目的高度相同)或 OwnerDrawVariable(如果每个项目的高度可能不同)。

然后将您的 DrawItem 事件修改为如下所示(显然用您自己的颜色替换):

private void comboBoxDb_DrawItem(object sender, DrawItemEventArgs e) 
{
var combo = sender as ComboBox;

if((e.State & DrawItemState.Selected) == DrawItemState.Selected)
{
e.Graphics.FillRectangle(new SolidBrush(Color.BlueViolet), e.Bounds);
}
else
{
e.Graphics.FillRectangle(new SolidBrush(SystemColors.Window), e.Bounds);
}

e.Graphics.DrawString(combo.Items[e.Index].ToString(),
e.Font,
new SolidBrush(Color.Black),
new Point(e.Bounds.X, e.Bounds.Y));
}

关于c# - 更改 WinForms ComboBox 的选择颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11649803/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com