ich bitte um Hilfe bei folgender Aufgabenstellung:
Durch Anklicken einer bestimmten Zelle öffne ich eine Listbox (über das SelectionChange-Ereignis wird die Listbox auf Visible = True gesetzt). Ich möchte jetzt unterscheiden, ob beim Anklicken der ListBox die STRG-Taste gedrückt war oder nicht, um 2 unterschiedliche Aktionen ausführen zu können. Hierzu habe ich mir folgendes überlegt:
Ich definiere die Public-Variable Strg und setze diese mit Hilfe der Ereignisprozedur ListBox1_KeyDown auf True und mit Hilfe der Ereignis-Prozedur ListBox1_KeyUp zurück auf False. Bei gedückter STRG-Taste muss die Variable dann True sein. Beim Anklicken der ListBox wird dann abgefragt, ob die Variable Strg True oder False ist und die Prozedur entsprechend verzweigt.
Mein Problem:
Wenn ich nach dem Öffnen der ListBox die STRG-Taste drücke, wird die Ereignisprozedur ListBox1_KeyDown nicht ausgeführt und also die Variable Strg nicht auf True gesetzt. Ich muß die Listbox erst einmal anklicken, danach läuft alles nach Wunsch.
Ich vermute, dass dies mit dem Focus zusammenhängt. Das Ereignis ListBox1_KeyDown kann ja nur eintreten, wenn die ListBox1 den Focus hat. Offenbar hat die Listbox unmittelbar nach dem Öffnen den Focus nicht und erhält ihn erst mit dem ersten Anklicken.
Ich suche jetzt nach einer Möglichkeit, der Listbox durch den Code beim Öffnen auch gleichzeitig den Focus zu übergeben, bisher aber erfolglos. ListBox1.SetFocus funktioniert nicht, wird nicht unterstützt. Ich kann mittels Code einen ListBox1.ListIndex bestimmen, was zur Folge hat, dass die Ereignisprozedur ListBox1_Click ausgeführt wird, aber der Focus wird offenbar trotzdem nicht übergeben, denn auch danach funktioniert Listbox1_KeyDown nicht.
Wer kann mir helfen, der Listbox den Focus mittels Code zu übergeben?
Oder hat jemand eine bessere Idee, wie ich beim Anklicken der ListBox unterscheiden kann zwischen gedrückter bzw. nicht gedrückter STRG-Taste?
Herzlichen Dank im Voraus für Eure Hilfe!
Gruß
Wilhelm