none
Click- Methode wird zweimal aufgerufen RRS feed

  • Frage

  • Hallo alle,

    ich habe auf einer abgeleiteten Form einen Button, dessen Click- Methode zweimal aufgerufen wird.  Bei anderen Button wird das Ereignis nur einmal verarbeitet. Gibt's da eine mögliche Erklärung für und wie kann ich das verhindern?

    Grüße

      Heiko

    Donnerstag, 31. Januar 2013 13:56

Alle Antworten

  • Hallo,

    ich tippe mal darauf, das das Event 2 mal abbonniert ist. Öffne mal deine Form.Designer.cs, nicht in der Designansicht. Dort musst du dann suchen wo der Ereignishandler doppelt hinzugefügt wird, als Beispiel:

                // 
                // button1
                // 
                this.button1.Location = new System.Drawing.Point(112, 72);
                this.button1.Name = "button1";
                this.button1.Size = new System.Drawing.Size(75, 23);
                this.button1.TabIndex = 0;
                this.button1.Text = "button1";
                this.button1.UseVisualStyleBackColor = true;
                this.button1.Click += new System.EventHandler(this.button1_Click);
                this.button1.Click += new System.EventHandler(this.button1_Click);
    Ansonsten kannst du auch mal mit der Suchfunktion deine Dateien, die mit der Form zu tun haben, nach dem Namen des Eventhandlers duchsuchen und ggf. ein "Abbonnierer" löschen.


    Koopakiller [kuːpakɪllɐ] | Webseite | Code Beispiele | Facebook | Snippets

    Donnerstag, 31. Januar 2013 14:00
  • Hallo koopakiller,

    nein, das war's leider nicht.

    Grüße

      Heiko

    Donnerstag, 31. Januar 2013 15:36
  • Hallo Heiko,

    Zum Rausfinden: Setze einen Breakpoint in die Methode und schau Dir die Aufrufliste an.
    Und führe den Code ggf. weiter mit Einzelschritt (F11) aus.

    Am Rande: Könnte das mit der vorherigen Frage zu tun haben?

    Gruß Elmar
    Donnerstag, 31. Januar 2013 15:46
  • Hallo Elmar,

    der Aufrufer ist in beiden Fällen:
    >    MagnetwerteLesen.exe!MagnetwerteLesen.frmDL800.btnMesswertSpeichern_Click(object sender = {Text = "Messwerte\r\nspeichern"}, System.EventArgs e = {X = 65 Y = 167 Button = Left}) Zeile 350

    (frmDL800 iast aus frmMain abgeleitet)

    Ich rufe aus der Click- Methode eine Methode LeereForm() auf, in der ich auf base.LeereForm() zurückgreife (plus formspezifische Ergänzungen). Könnte es damit was zu tun haben?

    > Am Rande: Könnte das mit der vorherigen Frage zu tun haben?

    :-) Hat es. Ist der gleiche Button. (Wobei ich immer noch nicht sehe, warum der geerbte btnStop nur auf "seine" btnStop_Click- Methode zugreift, der btnMesswert jedoch zuerst die base- Methode aufruft).

    Grüße

      Heiko

    Montag, 4. Februar 2013 07:12