我需要在具有不同背景颜色的组合框中显示项目。我还想根据是否选择了该项目(或鼠标在其顶部)来更改该颜色,这与组合框不是所有者绘制时的工作方式相同。
一切正常,除了当鼠标离开我更改颜色的项目之一时,该项目保持与鼠标在顶部时相同的颜色。在下面的示例中,项目 'other' 最初是使用 myUnselectedBrush 正确绘制的;鼠标移到顶部,使用 mySelectedBrush 正确绘制;当鼠标离开时,它仍然错误地用 mySelectedBrush 绘制;它应该是用 myUnselectedBrush 绘制的。对于项目“某物”,一切正常,其颜色没有改变。
我究竟做错了什么?
private void comboBoxDraw(object sender, DrawItemEventArgs e)
{
ComboBox cb = (ComboBox)sender;
Graphics g = e.Graphics;
e.DrawBackground();
if (e.Index > -1)
{
object item = cb.Items[e.Index];
switch (somethingOrOther)
{
case something:
break;
case other:
e.Graphics.FillRectangle(
(cb.SelectedIndex == e.Index)
? mySelectedBrush
: myUnselectedBrush,
e.Bounds);
break;
}
}
}
e.DrawFocusRectangle();
if (e.Index > -1)
{
// draw the string
}
}