忽略DevExpress RepositoryItemComboBox BackColor属性
本文关键字:属性 BackColor RepositoryItemComboBox DevExpress 忽略 | 更新日期: 2023-09-27 17:52:59
我有以下代码几乎工作正常;
private void cbStatus_DrawItem(object sender, ListBoxDrawItemEventArgs e)
{
string item = e.Item as string;
if (item != null)
{
switch (item)
{
case "1":
e.Appearance.ForeColor = Color.Green;
e.Appearance.BackColor = Color.Green;
break;
case "2":
e.Appearance.ForeColor = Color.Orange;
e.Appearance.BackColor = Color.Orange;
break;
case "3":
e.Appearance.ForeColor = Color.Red;
e.Appearance.BackColor = Color.Red;
break;
}
}
}
当下拉菜单显示时,项目的前颜色是正确的,但背景色保持不变,无论主题的背景色是什么;例如,如果我把它设置为深色主题,背景色是深色的,就像GridView中的单元格一样,而不是绿色/橙色/红色。
我试过设置e.Appearance.Options.UseBackColor
以及试图设置e.Handled
(e.Handled
也打破了前色,所以我摆脱了它)。
不知道为什么不工作。什么好主意吗?
如果您将e.Handled
设置为true
,则必须自己绘制项目。例如,您可以使用AppearanceObject.DrawBackground
方法和AppearanceObject.DrawString
方法来绘制您的项目:
private void cbStatus_DrawItem(object sender, ListBoxDrawItemEventArgs e)
{
string item = e.Item as string;
if (item != null)
{
switch (item)
{
case "1":
e.Appearance.BackColor = Color.Green;
break;
case "2":
e.Appearance.BackColor = Color.Orange;
break;
case "3":
e.Appearance.BackColor = Color.Red;
break;
}
e.Appearance.DrawBackground(e.Cache, e.Bounds);
e.Appearance.DrawString(e.Cache, item, e.Bounds);
e.Handled = true;
}
}