5 votes

L'utilisation d'une propriété statique dans un formulaire est-elle une mauvaise pratique sachant qu'il n'y a qu'une seule instance du formulaire ?

Dans un formulaire complexe, j'ai une propriété appelée Readonly qui détermine si tout est modifiable ou non. Jusqu'à présent, je passe cette propriété à chaque sous-contrôle personnalisé de ce formulaire par constructeur, et à d'autres endroits, j'accède au formulaire lui-même pour obtenir la valeur.

Mais cela devient rapidement trop complexe.
Je pense faire cette propriété Statique dans le formulaire sachant qu'il n'y a qu'une seule instance de ce formulaire dans l'application.

Est-il possible d'utiliser cette propriété comme un élément statique dans ce cas ? Ou est-ce une mauvaise pratique même s'il n'y a qu'une seule instance du formulaire ?

4voto

Darin Dimitrov Points 528142

Même si vous n'avez qu'une seule instance du formulaire, l'utilisation d'un champ statique ne le rend pas sûr. Vous pouvez avoir plusieurs threads qui causent des problèmes. Sans parler de la difficulté de tester unitairement votre application. Personnellement, j'essaie d'éviter les champs statiques autant que possible.

3voto

Marc Gravell Points 482669

Demandez-vous simplement : est-ce que cela a un rapport avec le formulaire ou à la type de la forme. Hypothétiquement, s'il y avait plus d'un formulaire, seraient-ils tous en lecture seule ou non en même temps ? Ou serait-ce par formulaire ?

Alors : vous avez la réponse. Je pense que ce devrait être une instance (non statique).

1voto

jgauffin Points 51913

Voici une solution alternative :

  1. Ajoutez les contrôles à votre formulaire comme d'habitude
  2. Créez une interface appelée IReadOnlyToggable qui a un IsReadOnly et laisser le formulaire l'implémenter.
  3. Ajoutez la propriété suivante à vos contrôles personnalisés :

code :

public bool IsFormReadOnly
{
    get 
    {
        var form  = ParentForm as IReadOnlyToggable;
        return form != null && form.IsReadOnly;
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X