2

有没有办法覆盖 Comboxx 的 Add() 方法?

我问这个的原因是我想将类对象添加到我的组合框中,但为了显示我希望它显示我的对象的名称。

例如: combbox.Items.Add(myClassObject)

但是我们在combboxx中实际看到的用户将显示为myClassObject.Name

4

4 回答 4

7

如果我正确理解了您的请求,您可以使用绑定来做到这一点:

伪代码:

comboBox.DataSource = collectionOfData;
comboBox.DisplayMember = "Name";

数据将被添加到组合中,但可视化将是Name“数据”的属性。

这一切都是使用DisplayMember Property完成的。

于 2012-09-25T15:14:25.343 回答
4

因为ComboBox使用ToString()添加到 Items 集合中的对象的方法显示在 UI 上,所以覆盖ToString返回myClassObject任何你想要的,它很简单:

class myClassObject
{
    public override string ToString()
    {
        return "whatever you want";
    }
}

通过这种方式,您不会触摸 ComboBox 控件

于 2012-09-25T15:15:34.593 回答
3

你可以开发extension Method

public static class Extension
{
    public static void Add(this ComboBox, myClassObject value)
    {
       ...
    }
}
于 2012-09-25T15:16:08.263 回答
0

创建一个扩展组合框控件的新控件。
然后覆盖Add方法。

于 2012-09-25T15:14:05.813 回答