Poiché non ho molta reputazione per pubblicare immagini, sto elaborando come una grande domanda.Come limitare gli eventi che si attivano più di una volta alla volta
Ho tre finestre in cui l'esecuzione degli eventi aumenta ogni volta che il modulo viene creato.
1. Form1 (MainForm)
Qui chiamate il secondo modulo (SubForm) che contiene un controllo utente.
2. Form2 (SubForm)
Qui mi chiamano la seconda forma (ChildForm) facendo clic il controllo utente.
3. Form3 (ChildForm)
Esso contiene un pulsante OK.
Ecco il mio problema.
- Per prima cosa apro MainForm e faccio clic sul pulsante per aprire il secondo modulo (Sottoforma).
- Ora in seconda forma (SubForm) Faccio clic sul controllo utente che mostra il terzo modulo (ChildForm).
- Quando faccio clic sul pulsante OK nel terzo modulo, il modulo viene chiuso.
- Ora chiudo il secondo modulo (SubForm) senza chiudere il primo modulo (modulo principale) e fare clic sul pulsante nel primo modulo (MainForm) per aprire nuovamente il secondo modulo (Sottoforma).
- Ora faccio clic sul controllo utente nel secondo modulo (SubForm) e viene aperto il terzo modulo (ChildForm).
- Ora, quando faccio clic su OK nel terzo modulo (ChildForm), l'evento nel secondo modulo (SubForm) viene generato nuovamente e il terzo modulo (ChildForm) viene aperto quattro volte.
- Ora, quando chiudo la seconda forma (SubForm) di nuovo e fa clic il controllo utente e prendere terza forma (ChildForm), la terza forma (ChildForm) viene aperto tre volte ecc ecc
Ecco il codice in prima forma (MainForm)
private void button1_Click(object sender, EventArgs e)
{
SubForm obj = new SubForm();
obj.ShowDialog();
}
Ecco il codice a seconda forma (SubForm) che contiene controllo utente
// Event generation
UserControl1.MouseUp += new EventHandler(this.Node_Click);
// Event that calls the ChildForm
private void Node_Click(object sender, EventArgs e)
{
ChildForm obj = new ChildForm();
obj.ShowDialog();
}
Ecco il codice in prima forma (Ma inForm)
private void btnOK_Click(object sender, EventArgs e)
{
this.Close();
}
Qualcuno sa perché questo sta accadendo?
Dove si verifica l'assegnazione di eventi 'MouseUp'? – DonBoitnott
Dove ci si abbona a 'UserControl1.MouseUp + = new EventHandler (this.Node_Click);'? Se ti iscrivi più volte, l'evento verrà generato più volte. –