2010-11-12 3 views
0

J'ai créé ce que j'appelle un "LabeledTextBoxWithLookupControl" qui hérite de UserControl. J'ai mis plusieurs de ces contrôles sur un formulaire. Maintenant, je commence à penser que c'était une mauvaise idée. Lorsque j'appelle le TopLevelControl.SelectNextControl(this, true, true, true, true)TopLevelControl.SelectNextControl(this, true, true, true, true) d'un événement KeyPress affecté à la zone de texte dans le UserControl, il sélectionne en fait le prochain UserControl, où je veux réellement qu'il sélectionne la zone de texte dans le contrôle utilisateur suivant. La propriété CanSelect de UserControl renvoie la valeur true, mais je ne vois aucun moyen simple de modifier le style de contrôle d'un UserControl.UserControls: Que manque-t-je?

En outre, lorsque j'utilise le mode de tabulation, je préfère ne pas considérer le contrôle utilisateur lui-même, mais le juste le TextBox dans l'UserControl en tant que candidat pour l'ordre de tabulation. Dois-je remplacer les propriétés TabIndex et TabStop de UserControl et les faire pointer vers TabIndex et TabStop du TextBox?

De même, dois-je exposer uniquement les propriétés des contrôles eux-mêmes, ou dois-je exposer chaque contrôle comme une propriété pour définir ces propriétés que je veux pouvoir définir, comme la propriété Text du contrôle d'étiquette, le clic événement de la propriété LookupControl et la propriété Text de la zone de texte.

+1

Pas repro. UserControl contient du code explicite qui transmet le focus à son premier contrôle enfant s'il obtient le focus. Publiez un petit projet de reprographie dans un service de partage de fichiers ou un bac de collage si vous avez besoin d'aide pour résoudre votre problème. –

+0

@Hans: J'ai rencontré ce problème avec les nouveaux types 'UserControl', donc je ne suis pas sûr d'être d'accord avec votre" no repro ". –

Répondre

1

Si vous ne voulez pas que le UserControl soit un onglet, mais plutôt son contenu, vous devez vous assurer qu'il n'a pas le style ControlStyles.Selectable.

Dans le constructeur de votre UserControl ajouter:

SetStyle(ControlStyles.Selectable, false); 
+0

génial! Merci! – Dave

+0

@Dave: Pas de problème. Heureux d'aider. :) –

Questions connexes