J'ai une application qui a un formulaire principal et utilise un gestionnaire d'événements pour traiter les données entrantes et refléter les changements dans les différents contrôles sur le formulaire principal. Cela fonctionne bien.Écoute d'événements dans un formulaire principal à partir d'un autre formulaire en C#
J'ai aussi une autre forme dans l'application. Il peut y avoir plusieurs instances de ce second formulaire en cours d'exécution à un moment donné. Ce que je voudrais faire est que chaque instance de cette seconde forme écoute le gestionnaire d'événements dans le formulaire principal et met à jour les contrôles sur son instance du second formulaire.
Comment est-ce que je ferais ceci?
Voici un exemple de code. Je veux des informations du gestionnaire d'événements the_timer_Tick pour mettre à jour chaque instance de SecondaryForm.
public partial class Form1 : Form
{
Timer the_timer = new Timer();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
the_timer.Tick += new EventHandler(the_timer_Tick);
the_timer.Interval = 2000;
the_timer.Enabled = true;
}
void the_timer_Tick(object sender, EventArgs e)
{
// I would like code in here to update all instances of SecondaryForm
// that happen to be open now.
MessageBox.Show("Timer ticked");
}
private void stop_timer_button_Click(object sender, EventArgs e)
{
the_timer.Enabled = false;
}
private void start_form_button_Click(object sender, EventArgs e)
{
SecondaryForm new_form = new SecondaryForm();
new_form.Show();
}
}
N'oubliez pas de supprimer le gestionnaire d'événements lorsque le second formulaire est fermé, sinon vous risquez d'avoir une fuite de référence ... –
Toutes vos références à SecondForm ne devraient-elles pas être de type SecondaryForm? Et à quoi ressemblerait SomeEvent dans le formulaire principal que j'ai posté? – Dave
Oui, je veux dire SecondForm = SecondaryForm. Par exemple, vous pouvez rendre Timer publique ou créer une propriété pour y accéder, et ne pas écouter les événements FistForm, mais ses événements timer: Voir mon code, je vais l'éditer – abatishchev