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 Anweisun­gen 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 Funktions­taste (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 Kom­ponente den Fokus hat. Diese Ereig­nis­se treten auch dann ein, wenn man die Alt-, AltGr-, Shift-, Strg- oder Funk­tions­tasten allein oder zusammen mit ande­ren 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 aus­gewählte Steuerelement eintreten können, werden im Eigen­schaftenfenster nach dem Anklicken des Icons für die Events (Ereignisse)

Icon

angezeigt.

Mit einem Doppelklick auf die Zeile eines Ereignis­ses im Eigenschaftenfenster erzeugt Visual Studio die Funktion (Ereignisbehandlungsroutine, engl. „event handler“, in der Online-Hilfe auch „Ereignis­handler“), die bei diesem Ereignis aufgerufen wird.

Eigenschaftenfenster

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 Para­meter Daten übergeben, die in Zusammen­hang mit dem Ereignis zur Ver­fügung stehen. In der Funktion button1_KeyPress hat der Parameter e den Daten­typ 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