将comboBox设置为自定义显示格式

本文关键字:自定义 显示格式 设置 comboBox | 更新日期: 2023-09-27 17:54:34

我有一个WinForms组合框,其中包含一个"区域"列表(我设置的自定义类)。每个Region都有NameAbbreviation等属性。我知道我可以将comboBox设置为comboBox.DisplayMember = "Name";,但我希望显示格式为"(" + Abbreviation + ") " + Name(例如(OR) Oregon)。

我知道我可以为此创建一个单独的属性(例如DisplayName),只是设置comboBox.DisplayMember = "DisplayName";,但有另一种方法吗?比如comboBox.DisplayMember = "(" + Abbreviation + ") " + Name;之类的?

将comboBox设置为自定义显示格式

你可以使用combobox的Format事件。

 private void comboBox1_Format(object sender, ListControlConvertEventArgs e)
    {
        string Name = ((yourClass)e.ListItem).Property1;
        string LastName = ((yourClass)e.ListItem).Property2;
        e.Value = Name + " " + LastName;
    }

这是相当旧的,但我努力找到为什么Format事件没有被触发。

您还需要将ComboBox.FormattingEnabled设置为true,以便调用和使用事件

另一种方法是修改类的' ToString() '方法。

如果你这样做,你将改变类的可视化方式无处不在(组合框,列表框等)

public override string ToString()
{
   return "(" + Abbreviation + ") " + Name;
}

如果你想在不同的地方有不同的视觉效果,这是无用的,但如果你想让它总是相同的,这是完美的