如何着色组合框的特定项目组合、项目

2023-09-03 07:43:13 作者:怂到你怀里

我要的颜色全部不能指定的从下拉框中的文本。我怎样才能做到这一点?我尝试过,但我无法做到这一点。

I want to color all "Unselectable" Text from combo box. How can i do this? I tried it but i am unable to do this.

我的code为如下:

private class ComboBoxItem
{
    public int Value { get; set; }
    public string Text { get; set; }
    public bool Selectable { get; set; }
}

private void Form1_Load(object sender, EventArgs e)
{
    this.comboBox1.ValueMember = "Value";
    this.comboBox1.DisplayMember = "Text";
    this.comboBox1.Items.AddRange(new[] {
        new ComboBoxItem() { Selectable = true, Text="Selectable0", Value=0,  },
        new ComboBoxItem() { Selectable = true, Text="Selectable1", Value=1},
        new ComboBoxItem() { Selectable = true, Text="Selectable2", Value=2},
        new ComboBoxItem() { Selectable = false, Text="Unselectable", Value=3},
        new ComboBoxItem() { Selectable = true, Text="Selectable3", Value=4},
        new ComboBoxItem() { Selectable = false, Text="Unselectable", Value=5},
    });

    this.comboBox1.SelectedIndexChanged += (cbSender, cbe) =>
    {
        var cb = cbSender as ComboBox;

        if (cb.SelectedItem != null && cb.SelectedItem is ComboBoxItem && ((ComboBoxItem)cb.SelectedItem).Selectable == false)
        {
            // deselect item
            cb.SelectedIndex = -1;
        }
    };
}

我的工作在C#.NET。

I am working in C#.NET.

推荐答案

您需要在ComboBoxItem到您需要的颜色设置前景色属性。

You need to set the foreground property on the ComboBoxItem to the colour you require.

new ComboBoxItem() { Selectable = false, Text="Unselectable", Value=3, Foreground = Brushes.Red},

MSDN页面