Lors de la manipulation de commandes sur une formulaire Windows .NET laquelle des options suivantes est la meilleure pratique et pourquoi?
//Hide control from user and stop control form being useable oControl.Visible = false;
8 Réponses :
Si le contrôle n'est pas rendu, la valeur de la propage activée n'aura aucun impact. P> activé code> désigne si l'utilisateur peut ou non interagir avec le contrôle (c'est-à-dire si le contrôle est grisé ou non) p>
visible code> fait référence à Wehether ou non le contrôle est affiché (généralement si cela est faux, le contrôle n'est pas rendu du tout, mais pas tout le temps apparemment - voir les commentaires de ce poste). < / p>
Ce n'est pas tout à fait le cas; Voir mon commentaire sur Toolstripmenuitem sous la réponse de Chrisf.
du MSDN : < / p>
éléments où la visibilité n'est pas Visible ne participe pas à une entrée événements (ou commandes), n'influence pas soit la mesure ou organiser des passes de la mise en page, ne sont pas dans une séquence d'onglets, et ne sera pas signalé en hit Test. P> blockQuote>
alors je pense que vous pouvez supposer que le réglage
.enabled = false code> est inutile. p>
mise à jour forte> p> J'ai vérifié le
Visibity code> Documentation sur le MSDN , mais malheureusement, cela ne dit rien de savoir si le contrôle est désactivé ou non. P>
Notez que la documentation que vous avez liée va faire référence au WPF, pas Winforms. Par exemple, un outilstripmenuitem qui a une clé de raccourci attribué, visible = false et activé = true obtiendra son événement de clic invoqué lorsque la touche de raccourci est enfoncée, même si elle est cachée.
Désolé - je pensais que je perdais l'arbre des Winforms. Je dois avoir frappé le mauvais lien quelque part le long de la ligne.
Sauf si il s'agit d'un contrôle spécial qui peut recevoir la concentration, même si invisible, je ne pense pas que vous devez le désactiver explicitement. Il suffit de désactiver la visibilité devrait être suffisant pour empêcher l'utilisateur d'interagir avec le contrôle. P>
Je ne dirais pas que c'est "faux", cependant. Je le décrivais comme "Overkill". P>
Un test rapide montre que le réglage visible en faux désactive également les touches d'accélérateur pour ce contrôle. P>
sous Win32 (c.-à-d. Ceci ne s'applique pas aux formulaires Windows), Les accélérateurs restent activés lorsque le contrôle est masqué mais non désactivé. Je suppose que c'est la référence que vous envisagiez de. P>
Pour les commandes de base telles que des étiquettes ou des zones de texte, je ne pense pas que cela fait une différence réelle quelle méthode que vous utilisez. P>
Mais envisagez un contrôle plus complexe, contenant une minuterie pour vérifier s'il y a de nouvelles données à afficher; La désactivation du contrôle désactive également la minuterie. P>
Si vous le faites invisible sans le désactiver, la minuterie incendie toujours les événements et toutes les nouvelles données sont toujours traitées. Si vous le désactivez également, de nouvelles données ne sont pas traitées. Cela dépend du cas spécifique, lequel des deux comportements que vous souhaitez. P>
FWIW, je suis en désaccord avec la personne qui vous a dit que c'était
Pas sûr de .NET, mais ActionScript / Flex a trois propriétés distinctes pour les contrôles qui prennent des valeurs booléennes. P>
activé p>
visible p>
InclusinLayout P>
Réglage de la propriété visible False le garde autour et peut effectuer la mise en page. Il est toujours dessiné par le rendu d'affichage. Le réglage includeLeLayOut La propriété le garde de la part d'être rendue ensemble. Souvent, je trouve utile d'inclure toutes les propriétés en fonction de ce que je veux arriver avec le contrôle et de mon avis. Il peut y avoir une propriété similaire à .NET. Mais je ne suis pas sûr. P>
Si vous posez aussi une question de convivialité plutôt que de simplement des questions techniques, je ne vous recommanderai pas de masquer des choses (sauf si vous ne changez pas complètement la "vue" actuelle de votre application), car il est généralement moins gênant trouver un contrôle Désactivé (cela vous donne un retour d'information sur l'action que vous souhaitez faire n'est pas encore prêt) que de passer quelques secondes à la recherche, juste pour réaliser après un certain temps qu'il doit être désactivé car les conditions préalables à utiliser ne sont pas satisfaites. p>
Si vous étiez déjà au courant de cela, ignorez-le simplement :-p p>
si vous devrez définir Mais certains contrôles (il semble être particulièrement celles-ci offrant une propriété de clé de raccourci), offrira toujours une interaction utilisateur lorsqu'elle n'est pas visible. Par exemple, le Réglage activé = false code> lors de la masquage d'un contrôle dépend du contrôle en question et de quel type d'interaction il offre. Pour de nombreuses commandes (telles que la case code> code> ou une case à cocher code>), réglage
visible = false code> suffire à éviter toute interaction entre l'utilisateur et le contrôle . p>
Toolstripmenuitem CODE> (et "ancien"
menuitem code>) aura toujours leur
Cliquez sur l'événement CODE> appelé lorsque la touche de raccourci est enfoncée, peu importe < Code> visible code> étant
true code> ou
false code>. p>
Enabled = FALSE code> empêchera d'appeler l'événement CODE> sur CODE> via des touches de raccourci dans ces cas. De ce point de vue, je voudrais pas em> conseils contre la définition
activé = false code> lors de la masquage d'une commande dans une application WinForms. P>