Pergunta

    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 = ...???;

Aqui, bindFontTypes é BindingSource. availableFonts é um Hashtable onde as chaves são strings, e os valores são objetos de FontType. Para comboFontType.DisplayMember eu quero usar objetos .DisplayName propriedade. Como posso especificar que? É possível?

Foi útil?

Solução

Pode funcionar se você definir

comboFontType.DisplayMember = "Value";  // FontType

e ToString() sobrecarga para FontType.

Como alternativa para ToString (), você pode manipular o evento Format da caixa de combinação.

Mas eu nem tenho certeza se a ligação de dados funciona desta forma.

Outras dicas

Ao usar DisplayMember = "Value.DisplayName" Estou geting o último adicionados ao Hashtable ... Eu estou trabalhando na obtenção de todos eles ....

Este é o que eu fiz ... mas só obter o último item na tabela de hash para ligar ....

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";
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top