Dynamische ComboBox

Bei der ComboBox ist auffällig, dass ihre Fähigkeiten im „Grundzustand“ seit vielen Jahren unverändert geblieben sind, und auch die ComboBox des neuesten .NET-Frameworks passt die Grösse des DropDown-Bereichs weder in der Höhe noch in der Breite dynamisch an den anzuzeigenden Datenbestand an.

Meine Abklärungen heute haben aber gezeigt, dass sich die ComboBox sehr wohl verbessert hat, was die Methoden und Properties betrifft, welche sie dem Programmierer zur Verfügung stellt. Ein „dynamischer“ DropDown-Bereich war in VB6 nur möglich mit ziemlich abenteuerlichem Einsatz von Window Handles und WIN32-API-Aufrufen; jetzt, im .NET-Framework, ist die ganze Sache zum Glück wesentlich einfacher.

Man kann mit Hilfe der Property DropDownHeight bequem die Höhe des DropDown-Bereichs programmiert auf eine bestimmte Anzahl Pixel setzen. Analog hat man via DropDownWidth Einfluss auf die Breite. Man muss nur IntegralHeight nach dem Setzen der Höhe wieder auf true setzen, wenn man angeschnittene Einträge nicht mag.

Das Anpassen der Höhe des DropDown-Bereichs einer ComboBox bis zu einer vernünftigen Obergrenze von hier 30 Zeilen ist mit zwei kleinen Zeilen Code bereits erledigt:

comboBox.DropDownHeight = Math.Min(30, comboBox.Items.Count) * comboBox.ItemHeight;
comboBox.IntegralHeight = true;

Eine dynamische Anpassung der Breite an den längsten Eintrag ist ebenfalls mit wenig Aufwand möglich, wie man z.B. hier nachlesen kann.

Den DropDown-Bereich resizable zu machen, so dass der Anwender selbst die Grösse ändern kann, wenn er sie anders haben will, dürfte allerdings nicht so einfach sein, denn hierfür habe ich in der ComboBox-Klasse keine Unterstützung gefunden. Ja, es ist mir im Moment nicht einmal klar, wie man hier vorgehen müsste, denn ich ich habe nicht herausgefunden, wo der DropDown-Bereich eigentlich „steckt“. Ein Child Control des Textfeld-Teils der ComboBox scheint er jedenfalls nicht zu sein.

Veröffentlicht in Keine Kategorie. Schlagwörter: , . Leave a Comment »

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: