2016-05-06 18 views
0

Wenn mit clickevents in Visual Studio spielen i accross diesem Fehler kam:MouseClickEvent Zähler multipliziert auf mehrere Klicks VS C#

private void pictureBox1_Click(object sender, EventArgs e) 
    { 
     Testcounter = 0; 
     pictureBox1.MouseClick += myMouseClickEventFunction; 
    } 

    private void myMouseClickEventFunction(object sender, MouseEventArgs e) 
    { 
     int x = colors.GetUpperBound(0) + 1; 
     int y = colors.GetUpperBound(1) + 1; 
     Testcounter++; 
     var point = new Point(e.X - pictureBox1.Width/2, e.Y - pictureBox1.Height/2); 
     for (int i = 0; i < x; i++) 
     { 
      for (int u = 0; u < y; u++) 
      { 
       if (cirkles[i, u].Contains(point)) 
       { 
        changeIndex(i, u); 
       } 
      } 
     } 
     this.Refresh(); 
    } 

Das erste Mal, dass ich meine picturebox klicken Sie auf den Wert Zähler 1, das zweite Mal der Wert 2., 3. Mal 3, ... Hat jemand eine Idee, warum das passiert? Du fügst die Prozedur noch einmal mit jedem Klick thnx

pic1 pic2

+0

Nun, Sie registrieren die Mausklick-Ereignis erneut jedes Mal, wenn der Benutzer klickt ... Versuchen Sie es nur einmal während des Starts zu registrieren, oder rufen Sie einfach die Funktion von Ihrem vorhandenen Listener. –

+0

Offensichtlich, danke für den Einblick auf eine lächerliche Frage! – sansactions

Antwort

0

Da durch dieses

pictureBox1.MouseClick += myMouseClickEventFunction; 

Ausführung. Was bedeutet, dass wenn Sie einmal darauf klicken, fügen Sie es einmal hinzu und es wird einmal ausgeführt. Aber mit dem zweiten Klick fügen Sie es noch einmal hinzu, also wird es dieses Mal zweimal ausgeführt und deshalb erhöht sich Ihr Zähler auf 2. Was Sie brauchen, ist, Ihren Klick-Handler an einen anderen Ort zu verschieben und ihn nur einmal zu registrieren bedeutet, dass der beste Ort, um es zu verschieben, in der Initialisierung des Formulars sein sollte. (In public MainForm(){} oder welcher Form auch immer Sie den Code verwenden) S.S .: Entschuldigung für das arme Englisch, ich hoffe, Sie haben mich verstanden.

+0

Offensichtlich, danke für den Einblick auf eine lächerliche Frage! – sansactions

+0

Ich bin mir nicht sicher, ob das Ironie ist, aber wenn ja - du bist diejenige, die fragt, Kumpel. Wenn nicht, dann kein Problem: D –

+0

nah "offensichtlich" war für mich dumm zu sein :) – sansactions

Verwandte Themen