un petit programme pour montrer ce que je veux dire.
exécuter le programme et cliquez sur le formulaire (la légende reste 1), cliquez sur Texte2 pour lui donner la mise au point et cliquez à nouveau le formulaire (modifications de légende à 2)
puis faire la même chose en Text2.SetFocus est décommenté dans Form_Click
voici le code:
'1 form with
' textbox : name=Text1 tabindex=0
' textbox : name=Text2 tabindex=1
Option Explicit
Private Sub Form_Click()
'uncomment the following line to make it work
' Text2.SetFocus
'with just the following call this wont work
Text1.SetFocus
End Sub
Private Sub Text1_GotFocus()
'increase the number in the form caption to show text1 got the focus again
Caption = CStr(Val(Caption) + 1)
End Sub
lorsque le programme démarre Texte1 obtient le focus (tabindex = 0), de sorte que les modifications sous forme de sous-titres à 1 lorsque vous cliquez sur le rien formulaire change parce que Text1 déjà h comme le focus et ne pas "obtenir" lorsque vous cliquez d'abord sur Text2, puis cliquez sur le formulaire la légende du formulaire augmente
en décommentant la ligne avec Text2.SetFocus vous laissez le programme déplacer toujours le focus sur Text2 (si ce n'est pas déjà là), avant de déplacer le focus sur Text1, Text1 va toujours "obtenir" le focus à nouveau
attention cependant! En donnant la priorité à un autre contrôle, il se peut que d'autres événements surgissent et que vous ne souhaitiez pas!
peut-être votre zone de texte a déjà le focus? (Pourriez-vous poster le code de l'événement gotfocus et où setfocus est appelé, essayez également de définir un point d'arrêt sur l'appel setfocus pour voir s'il est réellement appelé) – Hrqls
voir edit. J'ai parcouru le code pour voir que l'appel setfocus est en cours. Il passe directement à la ligne suivante sans entrer dans gotfocus. – CJ7
êtes-vous sûr que text1 n'a pas déjà le focus? essayez de définir le focus sur autre chose avant de le mettre en text1 – Hrqls