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);   
 
 
  
			
		 |