Rubrik: Controls · ComboBox | VB-Versionen: VB4, VB5, VB6 | 24.09.03 |
Feststellen, wann eine ComboBox auf- bzw. zugeklappt wird. Dieser Tipp verrät, wie sich feststellen lässt, wann eine ComboBox auf- und wieder zugeklappt wird. | ||
Autor: Dieter Otter | Bewertung: | Views: 14.720 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Klickt der Anwender auf den Pfeil einer ComboBox wird diese aufgeklappt und das DropDown-Ereignis ausgelöst. Leider besitzt die ComboBox kein entsprechendes Ereignis, das uns benachrichtigt, wenn die ComboBox wieder zugklappt wird.
Hierzu nun folgende Überlegzung: Wird die ComboBox aufgeklappt, so verdeckt die Liste einen bestimmten Bereich der Form. Dieser Bereich der Form muss - wenn die ComboBox wieder zugeklappt wird - neu gezeichnet werden. Wir brauchen jetzt also lediglich eine winzige PictureBox hinter die ComboBox zu legen, so dass beim Auf-/Zuklappen der ComboBox deren Paint-Ereignis ausgelöst wird, in welchem wir dann genau mitbekommen, wann die ComboBox auf- bzw. zugeklappt wurde
Um das nachfolgende Beispiel auszuprobieren, platzieren Sie auf die Form eine ComboBox, sowie eine PictureBox mit den Eigenschaften BorderStyle = 0, Appearance = 0 und Visible = False und für die Statusanzeige ein Label-Control (Label1).
Private Sub Form_Load() Dim i As Integer With Combo1 ' ein paar Einträge... For i = 1 To 10 .AddItem "Eintrag " & CStr(i) Next i ' PictureBox positionieren Picture1.Move .Left, .Top - 15, 15, .Height + 30 ' Eigenschaften der PictureBox With Picture1 .Visible = False .BorderStyle = 0 .Appearance = 0 .BackColor = Me.BackColor End With End With End Sub
Wird die ComboBox aufgeklappt, wird das DropDown-Ereignis ausgelöst. Hier machen wir die PictureBox sichtbar, so dass beim Zuklappen der ComboBox das Paint-Ereignis der PictureBox ausgelöst wird.
Private Sub Combo1_DropDown() ' ComboBox wird aufgeklapp Label1.Caption = "DropDown" ' PictureBox sichtbar machen Picture1.Tag = "DropDown" Picture1.Visible = True End Sub
Wird die ComboBox wieder zugeklappt, wird das Paint-Ereignis der PictureBox ausgelöst:
Private Sub Picture1_Paint() If Picture1.Tag = "DropDown" Then ' ComboBox wurde gerade aufgeklappt Picture1.Tag = "" Else ' ComboBox wurde gerade zugeklappt Label1.Caption = "Closed" Picture1.Visible = False End If End Sub