DevExpress RepositoryItemComboBox BackColor属性被忽略

时间:2015-06-03 02:28:42

标签: c# winforms devexpress

我有以下代码几乎正常工作;

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.Handlede.Handled也打破了前色,所以我摆脱了它。)

不确定为什么它不起作用。有任何想法吗?

1 个答案:

答案 0 :(得分:1)

如果您将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;
    }
}
相关问题