Contrôle de mouvement en C#: Clignotement des indicateurs et réinitialisation du système avec interaction entre formulaires enfants

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);

Étiquettes: C# windows-forms motion-control delegates event-handling

Publié le 12 août à 13h27