Initialisierung ComboBox SelectedIndex property in IDE vergessen?

29/10/2007 - 12:21 von Rudi | Report spam
Hallo,

weiß jemand welchen Grund es hat, wieso die SelectedIndex Property für
die ComboBox nicht in der IDE gesetzt werden kann oder wurde das
schlicht vergessen? Finde es umstàndlich das erst zur Laufzeit oder über
den Code im Designer setzten zu müssen. Hab ich was übersehen?

Gruß,Rudi
 

Lesen sie die antworten

#1 Frank Dzaebel
29/10/2007 - 13:34 | Warnen spam
Hallo Rudi,

weiß jemand welchen Grund es hat, wieso die SelectedIndex Property für
die ComboBox nicht in der IDE gesetzt werden kann oder wurde das
schlicht vergessen? Finde es umstàndlich das erst zur Laufzeit oder über
den Code im Designer setzten zu müssen. Hab ich was übersehen?



Bei den Selected* Eigenschaften ist bewusst (by design) ein
[Browsable(false)]
deklariert worden, damit dies nicht zur Designzeit
setzbar ist. Auch erstellt der Code-Generator im *.Designer.cs
keinen Code für das Objekt:

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]

Der Grund geht wohl in die Richtung:

- Man erst etwas selktieren, wenn es da ist.
Speziell bei DataSource-Bindung würde dieser
ja auch erst wàhrend der Laufzeit instanziiert werden.
Erst dann kann ja ein Selektion auf ein Element stattfinden.
- Race-Conditions, was zuerst erstellt werden müsste.
- Das Control ist zur Designzeit noch nicht vollstàndig gerendert.
Darf eigentlich auch erst ab InitLayout.


Trotz allem könnte man über Lösungen nachdenken,
die ggf. ein automatisches "cbo1.SelectedIndex = 0;"
im Form_Load o.à. zufügen. Aktuell kannst Du auch
als Workaround eine eigene ComboBox MyCombo
erstellen und das InitLayout überschreiben (nicht aber
im Konstruktor, da würdest Du einen Fehler bekommen):

class MyCombo : ComboBox
{ protected override void InitLayout()
{ base.InitLayout(); this.SelectedIndex = 0;
}
}


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen