Anmeldungsdatum: Aug 2007
Beiträge: 8643
Benutzer-Bewertung:
|
Auf dieser Seite findet ihr verschiedene Code Snippets, die euch bei der Benutzung der GUI weiterhelfen sollen.
Q: Wie kann ich auf ein Event bei einem Steuerelement reagieren, zum Beispiel wenn auf einen Button geklickt wird? A: Ihr müsst das entsprechende Event von dem Steuerelement abrufen und dann einen EventHandler registrieren. Zu diesem gehört immer eine Funktion, die aufgerufen werden soll. Diese Funktion müsst ihr per std::bind oder mit einem Lambda-Ausdruck übergeben. Im folgenden Beispiel seht ihr das registieren einer Click-Funktion bei einem Button.
CPP Code: class TestForm : public Form { public: TestForm() { Button *button = new Button(); //Variante 1: std::bind button->GetClickEvent() += ClickEventHandler(std::bind(&TestForm::button_Click, this, std::placeholder::_1)); //Variante 2: Lambda button->GetClickEvent() += ClickEventHandler([this](Control *sender) { button_Click(sender); }); //Variante 3: Lambda ohne externe Funktion. Achtung: Sollte aus Übersichtsgründen nicht verwendet werden. button->GetClickEvent() += ClickEventHandler([this](Control *sender) { MessageBox::Show("clicked"); }); this->AddControl(button); } void button_Click(Control *sender) { MessageBox::Show("clicked"); } };
Q: Ich habe einen EventHandler registriert, möchte diesen aber manchmal deaktivieren. Wie mach ich das? A: Dazu muss der EventHandler in einer Variable gespeichert werden, um ihn wiederverwenden zu können.
CPP Code: class TestForm : public Form { public: TestForm() { buttonHandler = ClickEventHandler(std::bind(&TestForm::button_Click, this, std::placeholder::_1)); Button *button = new Button(); button->GetClickEvent() += buttonHandler; this->AddControl(button); } void button_Click(Control *sender) { //sender ist in diesem Fall der Button ((Button*)sender)->GetClickEvent() -= buttonHandler; //lösche ClickEventHandler nach dem ersten Click } private: ClickEventHandler buttonHandler; };
Q: Welche Signatur müssen die Funktionen für die EventHandler besitzen? A:
CPP Code: //SelectedIndexChangedEvent; void function(Control *sender); //ColorChangedEvent; void function(Control *sender, Drawing::Color &color); //CheckedChangedEvent; void function(Control *sender); //TextChangedEvent; void function(Control *sender); //TickEvent; void function(Control *sender); //ValueChangedEvent; void function(Control *sender); //ScrollEvent; void function(Control *sender, ScrollEventArgs &args); //LocationChangedEvent; void function(Control *sender); //SizeChangedEvent; void function(Control *sender); //KeyDownEvent; void function(Control *sender, KeyEventArgs &args); //KeyPressEvent; void function(Control *sender, KeyPressEventArgs &args); //KeyUpEvent; void function(Control *sender, KeyEventArgs &args); //ClickEvent; void function(Control *sender); //MouseClickEvent; void function(Control *sender, MouseEventArgs &args); //MouseDownEvent; void function(Control *sender, MouseEventArgs &args); //MouseUpEvent; void function(Control *sender, MouseEventArgs &args); //MouseMoveEvent; void function(Control *sender, MouseEventArgs &args); //MouseScrollEvent; void function(Control *sender, MouseEventArgs &args); //MouseEnterEvent; void function(Control *sender); //MouseLeaveEvent; void function(Control *sender); //MouseCaptureChangedEvent; void function(Control *sender); //FocusGotEvent; void function(Control *sender); //FocusLostEvent; void function(Control *sender, Control *newFocusedControl);
|