C#:将哈希表绑定到组合框问题

时间:2009-10-21 14:57:33

标签: c# winforms data-binding combobox hashtable

    public class FontType
    {
        ...
        public String Name { get { return _name; } }
        public String DisplayName { get { return _displayName; } }
        public Font UseFont { get { return _font; } }
    }


bindFontTypes.DataSource = availableFonts;
comboFontType.DataSource = bindFontTypes;
comboFontType.ValueMember = "Key";
comboFontType.DisplayMember = ...???;

此处,bindFontTypes是BindingSource。 availableFonts是一个Hashtable,其中Keys是字符串,Values是FontType的对象。对于comboFontType.DisplayMember,我想使用对象的.DisplayName属性。我该如何指定?有可能吗?

2 个答案:

答案 0 :(得分:1)

如果设置

,它可能会有效
comboFontType.DisplayMember = "Value";  // FontType
{p>并ToString()重载FontType

作为ToString()的替代方法,您可以处理组合框的Format事件。

但我甚至不确定数据绑定是否以这种方式工作。

答案 1 :(得分:1)

使用DisplayMember = "Value.DisplayName"我将最后一个添加到Hashtable中......我正在努力将它们全部收集起来......

这就是我所做的......但只能让Hashtable中的最后一项绑定....

BindingSource src = new BindingSource();
            src.DataSource = new Hashtable 
            { 
            {
                "blah", 
                new FontType 
                { 
                    Name = "newFont", 
                    DisplayName = "new Font" 
                } 
                },
                { 
                    "another", 
                    new FontType 
                    {
                        Name = "anotherFont",
                        DisplayName = "another Font" 
                    } 
                    } 
            };
            comboBox1.DataSource = src;
            comboBox1.ValueMember = "Key";
            comboBox1.DisplayMember = "Value.DisplayName";