Buttons und Ereignisse
Veröffentlicht: Dezember 2009
Von Richard Kaiser und Alexander Kaiser
Im Folgenden wird am Beispiel eines Buttons gezeigt, wie man Eventhandler für die Ereignisse eines Steuerelements erzeugen kann, und wie ein Eventhandler über Parameter Informationen über das Ereignis zur Verfügung stellt.
Dieser Artikel ist ein kurzer Auszug aus dem Buch „C++ mit Microsoft Visual C++ 2008“ (ISBN 978-3540238690), das C++ mitsamt den Visual C++-Erweiterungen (C++/CLI) umfassend darstellt. Der Verfasser dieses Buches ist ein erfahrener C++- und C#-Trainer, der auch für Firmenschulungen zur Verfügung steht.
Ein Button (Toolbox|AllgemeineSteuerelemente) ermöglicht einem Anwender, die Ausführung von Anweisungen zu starten. Durch einen einfachen Mausklick auf den Button werden die für das Ereignis Click definierten Anweisungen ausgeführt.
Ein Button kann auf die folgenden Ereignisse reagieren:
Ereignis | Ereignis tritt ein |
Click |
wenn der Anwender die Komponente mit der Maus anklickt (d.h. die linke Maustaste drückt und wieder loslässt), oder wenn der Button den Fokus hat und die Leertaste, Return- oder Enter-Taste gedrückt wird. |
MouseDown MouseUp |
wenn eine Maustaste gedrückt bzw. wieder losgelassen wird, während der Mauszeiger über der Komponente ist. |
MouseMove | wenn der Mauszeiger über die Komponente bewegt wird. |
KeyPress |
wenn eine Taste auf der Tastatur gedrückt wird, während die Komponente den Fokus hat. Dieses Ereignis tritt im Unterschied zu den nächsten beiden nicht ein, wenn eine Taste gedrückt wird, die keinem ASCII-Zeichen entspricht, wie z.B. eine Funktionstaste (F1 usw.), die Strg-Taste, die Umschalttaste (für Großschreibung) usw. |
KeyUp KeyDown |
wenn eine beliebige Taste auf der Tastatur gedrückt wird, während die Komponente den Fokus hat. Diese Ereignisse treten auch dann ein, wenn man die Alt-, AltGr-, Shift-, Strg- oder Funktionstasten allein oder zusammen mit anderen Tasten drückt. |
Enter | wenn die Komponente den Fokus erhält. |
Leave | wenn die Komponente den Fokus verliert. |
DragDrop DragOver EndDrag |
wenn der Anwender ein gezogenes Objekt – über der Komponente ablegt, – über die Komponente zieht, – über der Komponente ablegt. |
Diese Ereignisse werden von der Klasse Control geerbt. Da diese Klasse eine gemeinsame Basisklasse aller Steuerelemente ist, stehen sie nicht nur für einen Button, sondern auch für andere Steuerelemente zur Verfügung.
Die Ereignisse, die für das auf dem Formular ausgewählte Steuerelement eintreten können, werden im Eigenschaftenfenster nach dem Anklicken des Icons für die Events (Ereignisse)
angezeigt.
Mit einem Doppelklick auf die Zeile eines Ereignisses im Eigenschaftenfenster erzeugt Visual Studio die Funktion (Ereignisbehandlungsroutine, engl. „event handler“, in der Online-Hilfe auch „Ereignishandler“), die bei diesem Ereignis aufgerufen wird.
Für das Ereignis KeyPress von button1 erhält man so diese Ereignisbehandlungsroutine:
private: System::Void button1_KeyPress(System::Object^
sender, System::Windows::Forms::KeyPressEventArgs^ e)
{
}
An eine Ereignisbehandlungsroutine werden über die Parameter Daten übergeben, die in Zusammenhang mit dem Ereignis zur Verfügung stehen. In der Funktion button1_KeyPress hat der Parameter e den Datentyp KeyPressEventArgs^. Diese Klasse enthält das Element
property wchar_t KeyChar
Es enthält das Zeichen der Taste, die auf der Tastatur gedrückt wurde und so zum Aufruf dieser Funktion geführt hat.
Beispiel: Wenn der Button button1 den Fokus hat und eine Taste auf der Tastatur gedrückt wird, gibt die Ereignisbehandlungsroutine
private: System::Void
button1_KeyPress(System::Object^ sender,
System::Windows::Forms::KeyPressEventArgs^ e)
{
textBox1->AppendText((e->KeyChar).ToString());
}
das Zeichen der gedrückten Taste in einer TextBox aus.
Zurück: Methoden am Beispiel einer TextBox | Weiter: Hauptmenüs, Kontextmenüs und Standarddialoge