J'ai une question sur le test de mon université à propos de C #. pourrait étiqueter une mise au point? EM> Comme je peux le voir sur le site MSDN, tous les contrôles peuvent se mettre au point, mais certains d'entre eux ne sont pas sélectionnés. Il me semble donc que la bonne réponse est "L'étiquette pourrait avoir une focalisation, mais ne pouvait pas être sélectionnée". L'étiquette a également une méthode Focus (). S'il vous plaît, aidez-moi à comprendre. Merci. P>
6 Réponses :
Il est facile de trouver la fin de la tâche si l'autorité de contrôle d'un contrôle se concentre. Il suffit de lire la propriété héritée à partir de la classe de contrôle. P> Les contrôles de formulaires Windows dans la liste suivante ne sont pas sélectionnés. Les commandes dérivées de ces commandes ne sont également pas sélectionnées. (Voir Documentation MSDN ) p> Aussi: p> La méthode de mise au point renvoie Un contrôle peut être sélectionné et recevoir
mise au point de saisie si tous les éléments suivants sont
True: la valeur code> sélectionnable code> de
Si vous avez besoin d'un contrôle semblable à une étiquette que vous pouvez vous concentrer, utilisez simplement une zone de texte et faites-la en liberté. Définissez quelques autres propriétés (styles, non sélectionnables, etc.) et vous avez terminé. P> p>
true code> si le
Contrôler avec succès les entrées reçues
concentrer. Le contrôle peut avoir l'entrée
Concentrez-vous tout en affichant de visuel
des indices d'avoir le focus. Cette
le comportement est principalement observé par le
Commandes non sélectionnées énumérées ci-dessous,
ou des contrôles dérivés d'eux. P>
contrôlstyles code> est défini sur
vrai code>, il est
contenus dans un autre contrôle, et tout
Ses contrôles parent sont tous deux visibles
et activé. p>
blockQuote>
Vous verrez qu'il existe une propriété en lecture seule appelée Canfocus sur une étiquette, si vous avez un coup d'œil à cette propriété tout en débogage, vous le verrez est faux. p>
Chaque contrôle qui hérite d'un contrôle a la méthode de mise au point, mais cela ne signifie pas que cela peut être concentré. P>
Alors l'étiquette ne pouvait pas se concentrer sur la mise au point?
Non, l'étiquette elle-même ne peut pas se concentrer, même si la méthode est exposée
du Documentation : p>
Un contrôle peut être sélectionné et recevoir mise au point de saisie si tous les éléments suivants sont True: la valeur code> sélectionnable code> de
contrôlstyles code> est défini sur
vrai code>, il est contenus dans un autre contrôle, et tous Ses contrôles parent sont tous deux visibles et activé. p> blockQuote>
depuis un Label contrôle n'est pas Sélectionnable, il ne peut pas recevoir la mise au point d'entrée, même s'il hérite d'une méthode
Focus () code> à partir de
Contrôle code>. Par conséquent, la réponse est aucun em>. P>
Oui, c'est la bonne réponse. La présence de focus code> ou
canfocus code> est vraiment non pertinent. L'API Windows (WinFormes est basée sur) a une règle difficile sur laquelle les contrôles peuvent recevoir la mise au point. Une étiquette (utilisée pour afficher statique i> texte) est l'une de celles qui peuvent jamais i> se concentrer sur. Aucune exception.
L'étiquette obtient le focus, mais il l'escalade au champ d'entrée spécifié dans son attribut "pour". Comme:
<label for="firstname">First Name</label><input type="text" name="firstname" />
Je pense que c'était une question C #, pas une question HTML.
Oui, il existe un Une étiquette peut être associée à une seule commande d'entrée, par exemple une étiquette pour un champ de texte de nom d'utilisateur, il existe donc un concept de Vous pouvez donc associer une commande d'entrée avec une étiquette et chaque étiquette est sélectionnée le contrôle transmis à la commande d'entrée associée. p>
exemple ici Cliquez sur Email ou par courrier électronique dans la zone de connexion et voyez ce qui s'est passé, de la même manière que vous appelez la méthode de la mise au point Sur l'étiquette, la mise au point sera transmise au contrôle associé. P> Focus () code> méthode sur l'étiquette et oui, il est absolument correct. mais se comporter différemment. laissez-moi essayer d'expliquer p>
Contrôle associé code> avec l'étiquette. AssociateControlid sur MSDN p>
merci beaucoup c'est très clair. Mais je n'ai pas marqué que la réponse était sur .net 2.0! Donc, l'étiquette n'a pas cette propriété là-bas. Et est-il disponible juste pour ASP .NET? Quoi qu'il en soit, merci beaucoup.
@Daria: Pour Winforms, le contrôle avec l'index d'onglets suivant recevra la mise au point lorsque vous essayez de définir la mise au point sur une étiquette code> code>. Donc, par exemple, que vous avez une étiquette avec un indice de tabulation de 0 et une zone de texte avec un indice de tabulation de 1. Lorsque vous essayez de définir la mise au point sur l'étiquette, la zone de texte obtiendra automatiquement la mise au point.
C'est un an, mais j'ai eu un problème similaire que l'OP. Dans mon cas, il s'agissait d'un contrôle utilisateur qui comptait une seule étiquette (amarré à remplir) dessus (il a d'autres fonctions situées dans les coulisses - il s'agit d'un contrôle de calendrier et apparaît un sélecteur de date - pas la standard - dans un panneau (popunder) ou un formulaire (popup)).
Le problème Il y avait que les usercontrols étaient vraiment destinés à des conteneurs et à la résistance à la mise au point (en le poussant sur les contrôles des enfants) - Comme l'étiquette est le seul contrôle des enfants, il arrête le USERCONTROL se concentrer. Utilisation de la zone de texte réadonny est un substitut médiocre car il manque d'alignement vertical et doit être multiligne pour former la hauteur. P>
La raison pour laquelle j'ajoute ce qui suit comme une réponse ici est parce que c'est possible (désolé les gars qui ont dit ici N'est-ce pas) et j'ai trouvé ce post et beaucoup comme celui qui était peu d'aide quand j'ai regardé. Quoi qu'il en soit, la façon de le faire est de remplacer l'étiquette et de définir le SetStyle - aussi l'ONPAINT pour dessiner un rectangle de mise au point (je dessine manuellement la mienne alors que ThelfocusRectangle ne semblait rien faire) - de sorte que ci-dessous: P> < PRE> XXX PRE>
Je ne me préoccupe pas de savoir s'il est correctement (Vue puriste) Droit de le faire, mais qu'il existe une fonte valide pour permettre une commande de sortie (comme étiquette) de se concentrer parfois. < / p> p>
Pour moi, le code ci-dessus est de moitié fonctionne. Si je clique sur le SelectBlaLabel, il se concentre sur la mise au point, mais il semble impossible de sélectionner la commande à l'aide de la touche TAB - il semble être exclu de l'ordre des onglets.