簡體   English   中英

DevExpress RepositoryItemComboBox BackColor屬性被忽略

[英]DevExpress RepositoryItemComboBox BackColor property ignored

我有以下代碼幾乎可以正常工作;

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破壞前景色,所以我擺脫了這一點)。

不知道為什么它不起作用。 有任何想法嗎?

如果將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;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM