Winforms 在组合框中以粗体显示某些项目

Winforms 在组合框中以粗体显示某些项目,winforms,Winforms,我的windows应用程序中有一个数据绑定到只读列表的组合框。我的要求是根据列表的属性以粗体显示一些项目。该属性与值成员和显示成员的属性不同。由于列表太大,是否仍可以在不循环每个项目的情况下执行此操作?关闭所选项目 public Form1() { _dataItems = new List<DataItem> { new DataItem {Name = "Alpha", IsBold = true, OtherData = new

我的windows应用程序中有一个数据绑定到只读列表的组合框。我的要求是根据列表的属性以粗体显示一些项目。该属性与值成员和显示成员的属性不同。由于列表太大,是否仍可以在不循环每个项目的情况下执行此操作?

关闭所选项目

public Form1()
{
    _dataItems = new List<DataItem>
        {
            new DataItem {Name = "Alpha", IsBold = true, OtherData = new object()},
            new DataItem {Name = "Beta", IsBold = false, OtherData = new object()},
            new DataItem {Name = "Gamma", IsBold = true, OtherData = new object()},
        };

    this.InitializeComponent();

    comboBox1.DrawItem += comboBox1_DrawItem;

    comboBox1.DataSource = _dataItems;
    comboBox1.DisplayMember = "Name";
    comboBox1.ValueMember = "OtherData";
}

void comboBox1_DrawItem(object sender, DrawItemEventArgs e)
{
    var dataItem = (DataItem)comboBox1.Items[e.Index];

    if (dataItem.IsBold)
        e.Graphics.DrawString(dataItem.Name, BoldFont, SystemBrushes.ControlText,
                            e.Bounds);
    else
        e.Graphics.DrawString(dataItem.Name, NormalFont, SystemBrushes.ControlText,
                            e.Bounds);
}

var dataItem=(dataItem)comboBox1.Items[e.Index];在将数据绑定到控件之前,是否可以访问items集合?数据源是在上述行之后分配的。@bhu我已将代码更改为使用传统函数而不是LINQ
public class DataItem
{
    public String Name { get; set; }
    public bool IsBold { get; set; }
    public Object OtherData { get; set; }

    public override string ToString()
    {
        return Name;
    }
}