Notes d'étude sur la gestion de l'interaction entre plusieurs formulaires enfants dans une application de contrôle de mouvement.
Approche générale : Utilisation de Timer System.Timers.Timer pour gérer les opérations périodiques États de processus : ProcessState avec valeurs 1 (stockage), -1 (extraction), 0 (état normal)
Fonctionnalités à implémenter :
- Réinitialisation du système via interaction entre deux formulaires enfants
- Le bouton de réinitialisation du formulaire manuel contrôle la méthode du formulaire de surveillance
Deux approches possibles : [1] Approche 1 : Délégation double utilisant un intermédiaire (formulaire principal) [2] Approche 2 : Objet de délégué statique
Approche 1 : Délégation double avec intermédiaire (formulaire principal)
[1.1] Formulaire de surveillance (enfant) : création d'une méthode de réinitialisation système
/// <summary>
/// Méthode de réinitialisation du système dans le formulaire de surveillance
/// </summary>
public void ResetSystem()
{
// Opération de réinitialisation
ListeAlertes = new List<string>();
ActualiserAlertes();
}
[1.2] Formulaire principal : création d'un délégué et d'une méthode
// Formulaire principal : déclaration du délégué de réinitialisation
private Action DelegueReinit;
/// <summary>
/// Méthode de réinitialisation dans le formulaire principal
/// </summary>
private void ExecuterReinit()
{
// Exécution du délégué de réinitialisation
this.DelegueReinit?.Invoke();
}
[1.3] Formulaire manuel (enfant) : création d'un délégué et d'une méthode
// Formulaire manuel : déclaration du délégué de réinitialisation
public Action DelegueReinit;
/// <summary>
/// Bouton de réinitialisation du formulaire manuel
/// </summary>
private void btn_reinit_Click(object sender, EventArgs e)
{
// Appel du délégué de réinitialisation
this.DelegueReinit?.Invoke();
}
[1.4] Chemin d'exécution : Bouton réinitialisation → Délégué formulaire manuel → Méthode réinitialisation principale → Délégué principal → Méthode réinitialisation surveillance
Approche 2 : Utilisation de délégué statique
[2.1] Formulaire de surveillance (enfant) : création d'une méthode de réinitialisation système
/// <summary>
/// Méthode de réinitialisation du système dans le formulaire de surveillance
/// </summary>
public void ResetSystem()
{
// Opération de réinitialisation
ListeAlertes = new List<string>();
ActualiserAlertes();
}
[2.2] Dans Program.cs, création de variables globales et délégué statique de réinitialisation
[2.3] Dans le formulaire principal, lors de l'ouverture du formulaire de surveillance, liaison du délégué statique global à la méthode SystemReset du formulaire de surveillance
Application pratique de l'approche 2 :
Cas où le forumlaire A appelle une méthode du formulaire B
[1] Ajout d'un délégué statique dans la classe GlobalVariable
/// <summary>
/// Délégué pour contrôler les E/S du formulaire de surveillance
/// </summary>
public static Action<string> ControleEIS;
[2] Formulaire B
GlobalVariable.ControleEIS += ExecuterMethode;
Méthode d'exécution réelle
public void ExecuterMethode(string nomMethode)
{
MethodInfo methode = GetType().GetMethod(nomMethode);
methode.Invoke(this, null);
}
[3] Formluaire A
GlobalVariable.ControleEIS(nomMethode);