将comboBox设置为自定义显示格式
本文关键字:自定义 显示格式 设置 comboBox | 更新日期: 2023-09-27 17:54:34
我有一个WinForms组合框,其中包含一个"区域"列表(我设置的自定义类)。每个Region
都有Name
、Abbreviation
等属性。我知道我可以将comboBox设置为comboBox.DisplayMember = "Name";
,但我希望显示格式为"(" + Abbreviation + ") " + Name
(例如(OR) Oregon
)。
我知道我可以为此创建一个单独的属性(例如DisplayName
),只是设置comboBox.DisplayMember = "DisplayName";
,但有另一种方法吗?比如comboBox.DisplayMember = "(" + Abbreviation + ") " + Name;
之类的?
你可以使用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;
}
如果你想在不同的地方有不同的视觉效果,这是无用的,但如果你想让它总是相同的,这是完美的