by Anonymous » 25 Feb 2025, 20:00
Ich habe den folgenden Code, um ein Combobox < /p>
zu generieren
Code: Select all
BindingList types = new([typeof(Foo), typeof(Bar)]);
Type? selectedType = types.SingleOrDefault(t => t.Name == "Bar");
ComboBox comboBox1 = new()
{
DataSource = types,
DisplayMember = nameof(Type.Name),
DropDownStyle = ComboBoxStyle.DropDownList,
SelectedItem = selectedType
};
Wenn ich jedoch den Combobox annehme, trotz ausgewählter Typ hat der Wert, den ich erwarten würde, hat der Combobox das erste Element ausgewählt. Außerdem wurde mir aufgefallen, dass, wenn ich versuche, Combob ox1.selectedIndex zu verwenden, alle Werte einen IndexoutOfRangeException . und stattdessen die Elemente Eigenschaft bevölkern, funktioniert sie gut:
Code: Select all
BindingList strings = new(new string[] { "Foo", "Bar"}.ToList());
ComboBox comboBox1 = new()
{
DropDownStyle = ComboBoxStyle.DropDownList,
};
comboBox1.Items.AddRange(strings.ToArray());
comboBox1.SelectedItem = "Bar";
< /code>
Ist dies eine Einschränkung der WinForms, oder mache ich etwas falsch? hat aber keine Antwort, die für mich funktioniert, da ich den DisplayName
und den DisplayValue auf irgendetwas nicht festlegen kann.
Ich habe den folgenden Code, um ein Combobox < /p>
zu generieren[code]BindingList types = new([typeof(Foo), typeof(Bar)]);
Type? selectedType = types.SingleOrDefault(t => t.Name == "Bar");
ComboBox comboBox1 = new()
{
DataSource = types,
DisplayMember = nameof(Type.Name),
DropDownStyle = ComboBoxStyle.DropDownList,
SelectedItem = selectedType
};
[/code]
Wenn ich jedoch den Combobox annehme, trotz ausgewählter Typ hat der Wert, den ich erwarten würde, hat der Combobox das erste Element ausgewählt. Außerdem wurde mir aufgefallen, dass, wenn ich versuche, Combob ox1.selectedIndex zu verwenden, alle Werte einen IndexoutOfRangeException . und stattdessen die Elemente Eigenschaft bevölkern, funktioniert sie gut:
[code]BindingList strings = new(new string[] { "Foo", "Bar"}.ToList());
ComboBox comboBox1 = new()
{
DropDownStyle = ComboBoxStyle.DropDownList,
};
comboBox1.Items.AddRange(strings.ToArray());
comboBox1.SelectedItem = "Bar";
< /code>
Ist dies eine Einschränkung der WinForms, oder mache ich etwas falsch? hat aber keine Antwort, die für mich funktioniert, da ich den DisplayName [/code] und den DisplayValue auf irgendetwas nicht festlegen kann.