有没有办法覆盖 Comboxx 的 Add() 方法?
我问这个的原因是我想将类对象添加到我的组合框中,但为了显示我希望它显示我的对象的名称。
例如: combbox.Items.Add(myClassObject)
但是我们在combboxx中实际看到的用户将显示为myClassObject.Name
如果我正确理解了您的请求,您可以使用绑定来做到这一点:
伪代码:
comboBox.DataSource = collectionOfData;
comboBox.DisplayMember = "Name";
数据将被添加到组合中,但可视化将是Name
“数据”的属性。
这一切都是使用DisplayMember Property完成的。
因为ComboBox
使用ToString()
添加到 Items 集合中的对象的方法显示在 UI 上,所以覆盖ToString
返回myClassObject
任何你想要的,它很简单:
class myClassObject
{
public override string ToString()
{
return "whatever you want";
}
}
通过这种方式,您不会触摸 ComboBox 控件
你可以开发extension Method
public static class Extension
{
public static void Add(this ComboBox, myClassObject value)
{
...
}
}
创建一个扩展组合框控件的新控件。
然后覆盖Add
方法。