C #: enlace hashtable a la pregunta del cuadro combinado
-
05-07-2019 - |
Pregunta
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 = ...???;
Aquí, bindFontTypes
es BindingSource. availableFonts
es una Hashtable donde las claves son cadenas y los valores son objetos de FontType. Para comboFontType.DisplayMember
quiero usar la propiedad '.DisplayName de los objetos. ¿Cómo especifico eso? ¿Es posible?
Solución
Podría funcionar si configuras
comboFontType.DisplayMember = "Value"; // FontType
y sobrecarga ToString ()
para FontType
.
Como alternativa para ToString (), puede controlar el evento de Formato del cuadro combinado.
Pero ni siquiera estoy seguro de si el enlace de datos funciona de esta manera.
Otros consejos
Al usar DisplayMember = " Value.DisplayName "
obtengo el último agregado a la Hashtable ... Estoy trabajando para conseguirlos todos ...
Esto es lo que hice ... pero solo obtuve el último elemento de Hashtable para enlazar ...
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";