Autor Beitrag
masteroffinalfantasy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 82

Win XP
Delphi 2005 Architect
BeitragVerfasst: Di 05.08.08 12:17 
Moin moin,

ich sammel in meinem Programm alle Checkboxen in einem Array zusammen:

ausblenden 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[0as CheckBox);
                    collectionb[i - 1].MouseClick += new MouseEventHandler(Checkbox_MouseClick);
                    
                }

Die Checkbox_MouseClick Prozedur sieht wiefolgt aus (nur als Test)

ausblenden 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 user profile iconChristian S.: Topic aus Basistechnologien verschoben am Di 05.08.2008 um 12:18
lothi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 114
Erhaltene Danke: 3



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 18.08.08 16:08 
MouseDown sollte auch Rechtsklicks abfangen.

PS: Hast du wirklich 320 Controls von Hand auf die Form gezogen :?:
lothi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 114
Erhaltene Danke: 3



BeitragVerfasst: 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 18.08.08 23:46 
Anscheinend hätte ich es lieber so formulieren sollen:
user profile iconKhabarakh hat folgendes geschrieben:
MouseDown sollte auch Rechtsklicks abfangen.
lothi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 114
Erhaltene Danke: 3



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: 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.