C #: hashtable Binding à pergunta caixa de combinação
-
05-07-2019 - |
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?
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";