Entwickler-Ecke
WinForms - Dynamische MouseClickereignise
masteroffinalfantasy - Di 05.08.08 12:17
Titel: Dynamische MouseClickereignise
Moin moin,
ich sammel in meinem Programm alle Checkboxen in einem Array zusammen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| for (int i = 1; i <= 320; i++) {
collection = this.Controls.Find("checkBox" + i.ToString(), true); collectionb[i - 1] = (collection[0] as CheckBox); collectionb[i - 1].MouseClick += new MouseEventHandler(Checkbox_MouseClick); } |
Die Checkbox_MouseClick Prozedur sieht wiefolgt aus (nur als Test)
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| public void Checkbox_MouseClick(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { MessageBox.Show("Rechte Maustaste wurde auf " + sender.ToString() + " gedrückt"); } } |
Das Problem ist nun, dass ich wie wild auf den checkboxen klicken kann, das Ereignis wird leider nicht ausgelöst.
Was habe ich übersehen bzw. nicht beachtet?
Wie immer danke im vorraus. ;)
Lg
Moderiert von
Christian S.: Topic aus Basistechnologien verschoben am Di 05.08.2008 um 12:18
lothi - So 17.08.08 23:08
Hallo
Ich habe das mal ausprobiert. es liegt nicht am erstellen des Events.
Die Rechte Maustaste wird bei mir auch nicht verarbeitet und das z.B auch beim Button nicht.
Gruss Lothi
Kha - Mo 18.08.08 16:08
MouseDown sollte auch Rechtsklicks abfangen.
PS: Hast du wirklich 320 Controls von Hand auf die Form gezogen :?:
lothi - Mo 18.08.08 19:13
Hallo Khabarakh
Sollte ja. Aber?
Ich habe noch extra geschaut ob ich ein ContextMenu oder so am laufen habe. Hab ich nicht.
Folgendes:
Visual Studio Express 2008
Neuês Projekt "WindowsFormsApplication1" mit einem Button button1
Ein Event:
this.button1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.button1_MouseClick);
Der Code:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| private void button1_MouseClick(object sender, MouseEventArgs e) { if (e.Button != MouseButtons.Right) { MessageBox.Show("Linke Maus"); } else { MessageBox.Show("Rechte Maus"); } } |
Gruss Lothi
Kha - Mo 18.08.08 23:46
Anscheinend hätte ich es lieber so formulieren sollen:
Khabarakh hat folgendes geschrieben: |
| MouseDown sollte auch Rechtsklicks abfangen. |
lothi - Di 19.08.08 08:48
Hallo Sebastian
Wobei ich jetzt mit meinen bescheidenen Kenntnissen im Reflector keinen Unterschied im Mausclick oder Mausdown finden konnte.
Gruss Lothi
Kha - Di 19.08.08 10:57
Uff... so weit habe ich mich nun auch wieder nicht durchgegraben :shock: . Die Übergänge zur Win-API sind wohl die hässlichsten Stellen im Framework.
Sei's drum: Control wirft MouseClick nur bei Controls mit ControlStyles.StandardClick (Control.cs, WmMouseUp, Z. 13019), MouseDown immer.
Wobei das noch einmal von CheckBox überschrieben wird (OnMouseDown, Z. 615), aber nur für die linke Maustaste.
LMB wirft also bei einer CheckBox beide Events, RMB nur MouseDown.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!