2009-01-29 4 views
5

Il est assez courant d'avoir un formulaire avec une case à cocher indiquant "Utiliser foo" immédiatement suivi d'une zone de texte où l'utilisateur peut entrer la "valeur foo" qu'il veut utiliser. Bien sûr, cette zone de texte est utile que si « Utiliser foo » est cochéeComment gérez-vous les contrôles inutiles temporaires dans Winforms (masquage vs désactivation)?

Je ne sais pas la meilleure façon de faire face à cette situation:

  1. Désactiver la zone de texte (c.-à-textboxfoo.Enabled = false;
  2. Masquer le texte (ie textboxfoo.Visible = false;)
  3. Laisser l'utilisateur entrer une valeur foo s'il le souhaite et ignorer la valeur qu'il a entrée.

Y at-il une meilleure pratique que je peux suivre?

+0

Bonne question. Je suis également intéressé par le consensus général. – JMD

Répondre

12

La zone de texte doit être désactivée.

Si la zone de texte est masquée, la modification visible du formulaire rendra le programme moins convivial. Un exemple de ceci est l'ancien (très impopulaire) disparaissant les éléments de menu qui étaient dans Microsoft Office. Les gens ne veulent pas que les choses bougent sur leurs écrans. C'est désorientant.

Si l'utilisateur est autorisé à entrer une valeur inutile, cela donne la fausse impression que l'entrée de la valeur a un effet.

+0

+1 (sauf que je n'ai plus de voix, j'imagine que je devrais "revenir demain") – Rob

+0

En outre, je pense que vous pouvez modifier une info-bulle pour qu'elle s'affiche même si le contrôle est désactivé. Ainsi, vous pourriez avoir l'info-bulle expliquant pourquoi le contrôle est désactivé, et/ou comment le réactiver. –

0

Je préfère désactiver la fonction de masquage, ne serait-ce que parce qu'elle évite les espaces inutiles dans votre boîte de dialogue.

1

Désactiver la zone de texte

Avec la zone de texte caché, l'utilisateur peut ignorer l'option « Utiliser Foo » car il ne sera pas clair pour eux comment ils vont ou devraient définir « foo ». Avec la zone de texte visible mais désactivée, l'utilisateur reconnaîtra qu'il peut définir "foo" une fois qu'il a dit vouloir l'utiliser.

2

La désactivation de la zone de texte est la meilleure option dans ce cas. Le fait que la zone de texte soit activée/désactivée lorsque la case est cochée/décochée fournit un retour utile à l'utilisateur: l'option use foo attend une valeur foo, et la valeur foo n'a de sens que si l'option use foo est sélectionnée.

Masquer la zone de texte est moins satisfaisant - si la case n'est pas cochée, l'utilisateur ne réalisera pas que l'activation de l'option foo lui permettra de spécifier la valeur foo. Imaginez-les en pensant à eux-mêmes: "Je ferais mieux de ne pas sélectionner l'option foo d'utilisation, car je n'ai aucune idée de ce que la valeur foo sera utilisée."

La troisième option est la pire, puisqu'elle n'indique pas que la valeur entrée sera ignorée.

+0

En outre, une valeur par défaut visible dans la zone de texte désactivée peut fournir des informations supplémentaires sur exactement ce que l'on entend par "Foo" (par exemple, un foo _number_). Beaucoup plus à http://www.zuschlogin.com/?p=40. –

0

Désactiver la zone de texte.
Il est clair pour l'utilisateur qu'il existe une option qui n'est pas disponible. En le cachant, on obtient parfois une réponse de l'utilisateur «Où est passée ma boîte?

1

La désactivation claire de la zone de texte est favorisée car l'utilisateur a toujours une idée visuelle de ce que "Foo" lui permettra de faire.

Mais qu'en est-il du panneau "Plus d'options >>"/"< < Moins d'options" qui s'ouvre ou se ferme lorsque "Foo" est coché/décoché? Pour beaucoup de travail, du point de vue du développeur, et/ou trop de violon, du point de vue de l'utilisateur?Moi, j'aime la façon dont il nettoie l'interface, étant donné que les valeurs par défaut pour "Foo" (lorsqu'il est caché) sont appropriées.

(Cela dit, je ne l'utilise que partout. Modération dans toutes les bonnes choses.)

0

Une autre option serait de laisser entrer l'entrée des données s'il veut aussi, mais pour vérifier automatiquement la foo checkbox s'il commence à taper dans la fbox textbox.

Questions connexes