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