c# Button.click
- Ersteller Martin7
- Erstellt am
1
1668mib
Gast
Nein... macht auch nicht viel Sinn in einer ereignisgesteuerten Umgebung...
Der Klick auf den Button löst ein Ereignis aus, an das kann man sich "dranhängen".
Der Klick auf den Button löst ein Ereignis aus, an das kann man sich "dranhängen".
Spartaner117
Lt. Commander
- Registriert
- Feb. 2005
- Beiträge
- 1.299
Ich kann dir leider nicht sagen, inwiefern das von C# Funktionen schon übernommen wird, aber generell funktioniert jedes Winowsfenster auf Nachrichten. Alles was du in diesem Fenster machst, ob Button drücken oder nur Maus bewegen, löst eine Nachricht aus, die an eine bestimmte Funktion geschickt wird. Dort kannst du die Nachricht auftrennen, d.h.: (sehr grob)
Wenn message == "Irgendeine Kennnummer des Buttons" dann Ereignis.
In der Praxis sähe das in etwa so aus: (Ist C++, dürfte sich aber nicht groß unterscheiden.)
So in etwa funktioniert ein Winowsfenster.
Wenn message == "Irgendeine Kennnummer des Buttons" dann Ereignis.
In der Praxis sähe das in etwa so aus: (Ist C++, dürfte sich aber nicht groß unterscheiden.)
Code:
{
switch (message)
{
case WM_COMMAND:
{
switch(LOWORD(wParam)) //Hier wird die message WM_COMMAND nocheinmal aufgetrennt in hiword und loword
{
case IDC_HIER_BUTTON_ID:
{
Blafunktion(); //Hier ist die eigendliche Funktion die durch denk Knopfdruck ausgelöst wird.
}
}
}
}
So in etwa funktioniert ein Winowsfenster.
Backslash
Captain
- Registriert
- Okt. 2006
- Beiträge
- 3.242
In C# etwas anders: 
Bei der Definition des Steuerelements wird die Funktion die ausgeführt werden soll als EventHandler hinzugefügt, z.B. so:
Wie man sieht bekommt die Funktion die Parameter sender vom Typ object und die EventArgs übergeben. Ist ja eigentlich selbsterklärend.
Eine C# Community

Bei der Definition des Steuerelements wird die Funktion die ausgeführt werden soll als EventHandler hinzugefügt, z.B. so:
Code:
void InitializeControls()
{
Button btnKlick = new Button();
btnKlick.Text = "Klick!";
btnKlick.Click += new EventHandler(btnKlick_Click);
this.Controls.Add(btnKlick)
}
void btnKlick_Click(object sender, EventArgs e)
{
// was auch immer getan werden soll, z.B....
MessageBox.Show("Hallo");
}
Eine C# Community
Spartaner117
Lt. Commander
- Registriert
- Feb. 2005
- Beiträge
- 1.299
Hm, ok, knapp daneben.
Dieses Prinzip findest du aber auch sicher in den C# Klassen, nur halt benutzerfreundlicher verpackt.
Dieses Prinzip findest du aber auch sicher in den C# Klassen, nur halt benutzerfreundlicher verpackt.
k das mit dem eventhandler weiß ich...
das problem ist...ich hab 5 buttons.....diese 5 buttons sollen gemeinsam auf das gleiche feld zugreifen können...aber dann muß ichs in global definieren...hm
wo ist dann der unterschied, denn dies ist ja möglich, bei der checkbox ?
und danke für eure hilfe
lg
das problem ist...ich hab 5 buttons.....diese 5 buttons sollen gemeinsam auf das gleiche feld zugreifen können...aber dann muß ichs in global definieren...hm
wo ist dann der unterschied, denn dies ist ja möglich, bei der checkbox ?
und danke für eure hilfe
lg
RoterWind
Newbie
- Registriert
- März 2008
- Beiträge
- 3
wenn alle buttons auf das gleiche verweisen sollen, könntest du ja einfach jedem der 5
buttons den gleichen Code geben, also:
private void button1_Click(object sender, EventArgs e)
{
DialogResult result =
//hier dann auf das verweisen was du willst
}
ich weiß das ist ein bissle blöd ausgedrückt aber vielleicht funktionierts...
ps.: für die anderen buttons dann halt "button2(3;4;5)_Click" schreiben.
buttons den gleichen Code geben, also:
private void button1_Click(object sender, EventArgs e)
{
DialogResult result =
//hier dann auf das verweisen was du willst
}
ich weiß das ist ein bissle blöd ausgedrückt aber vielleicht funktionierts...
ps.: für die anderen buttons dann halt "button2(3;4;5)_Click" schreiben.
1.) Bei dem Code in C++ musst du einmal zu dem Teil des switch case kommen. Wenn man nicht so lange pollen will, bis was kommt, dann muss man erst ein Ereignis abfangen oder in einem Thread eine blockierende Funktion verwenden, die auf den Tastendruck wartet.
2.) Ich würde einfach ein dein GUI die 5 Buttons reinziehen. Dann auf einen drauf klicken, dann kommt ca. der Code (ist zwar VB.NET aber ist nicht viel um):
Du machst daraus einfach ein:
public sub Button_Click(Byval sender as Object, e as System.EventArgs) handles Button1.Click, Button2.Click, Button3.Click, Button4.Click, Button5.Click
Damit fängst du 5 Ereignisse ab. In der Variable sender steht dann dein Button drin.
Kann auch sein, dass es in C# irgendwo oben in der Variablendefinition steht. Einfach etwas suchen und alle Ereignisse auf Button_Click umleiten.
Folgender Code kann gar nicht funktionieren:
if(button1.click)
{
tu was.
}
Wann soll da button1.click true liefern? Wenn der Button irgendwann einmal gedrückt wurde, dann funktioniert die Abfrage genau einmal richtig => eher schlecht
Wenn es true liefert, wenn man gerade jetzt die Maustaste gedrückt hat, dann darf man das ja nicht verpassen und muss ständig abfragen => auch schlecht
2.) Ich würde einfach ein dein GUI die 5 Buttons reinziehen. Dann auf einen drauf klicken, dann kommt ca. der Code (ist zwar VB.NET aber ist nicht viel um):
Code:
public sub Button1_Click(Byval sender as Object, e as System.EventArgs) handles Button1.Click
'Dein Code, der irgendetwas tut
end sub
Du machst daraus einfach ein:
public sub Button_Click(Byval sender as Object, e as System.EventArgs) handles Button1.Click, Button2.Click, Button3.Click, Button4.Click, Button5.Click
Damit fängst du 5 Ereignisse ab. In der Variable sender steht dann dein Button drin.
Kann auch sein, dass es in C# irgendwo oben in der Variablendefinition steht. Einfach etwas suchen und alle Ereignisse auf Button_Click umleiten.
Folgender Code kann gar nicht funktionieren:
if(button1.click)
{
tu was.
}
Wann soll da button1.click true liefern? Wenn der Button irgendwann einmal gedrückt wurde, dann funktioniert die Abfrage genau einmal richtig => eher schlecht
Wenn es true liefert, wenn man gerade jetzt die Maustaste gedrückt hat, dann darf man das ja nicht verpassen und muss ständig abfragen => auch schlecht
gunjahcom
Lt. Junior Grade
- Registriert
- Nov. 2006
- Beiträge
- 385
falls du visual studio (standard, express, prof,ts) benutzt, und die buttons über den designer angelegt hast...
doppelklick auf den ersten button, damit wird die Eventmethode im code erstellt.
danach für jeden button im eigenschaftenfenster auf die Eventproperties wechseln(dieser Button mit dem gelben Blitz), und dann beim gewünschten event (bei dir click) den Eventhandler des ersten Buttons aus der Liste auswählen.
Jetzt wird für jeden der Buttons nur diese eine Methode aufgerufen und über den Parameter "sender" kannst du auch noch innerhalb der Methode rausfinden, welcher Button das Event ausgelös hat.
Meiner meinung nach sollte das funktionieren.
doppelklick auf den ersten button, damit wird die Eventmethode im code erstellt.
danach für jeden button im eigenschaftenfenster auf die Eventproperties wechseln(dieser Button mit dem gelben Blitz), und dann beim gewünschten event (bei dir click) den Eventhandler des ersten Buttons aus der Liste auswählen.
Jetzt wird für jeden der Buttons nur diese eine Methode aufgerufen und über den Parameter "sender" kannst du auch noch innerhalb der Methode rausfinden, welcher Button das Event ausgelös hat.
Meiner meinung nach sollte das funktionieren.
Zuletzt bearbeitet:
Ähnliche Themen
- Antworten
- 4
- Aufrufe
- 1.211
- Antworten
- 19
- Aufrufe
- 1.730
- Antworten
- 2
- Aufrufe
- 1.283