Comment savoir quel contrôle a le focus dans Windows Forms?Comment puis-je savoir quel contrôle a le focus dans Windows Forms .NET?
Répondre
Form.ActiveControl
peut être ce que vous voulez.
Quelque chose le long de ces lignes:
Protected Function GetFocusControl() As Control
Dim focusControl As Control = Nothing
' Use this to get the Focused Control:
Dim focusHandle As IntPtr = GetFocus()
If IntPtr.Zero.Equals(focusHandle) Then
focusControl = Control.FromHandle(focusHandle)
End If
' Note that it returns NOTHING if there is not a .NET control with focus
Return focusControl
End Function
Je pense que ce code est venu de windowsclient.net, mais il a été un moment, alors ...
S'il vous plaît laissez-moi downvote la réponse jusqu'à ce que vous l'ayez terminé. L'appel de 'GetFocus()' se bloque dans nulle part et la réponse sous cette forme ne fonctionnera tout simplement pas. – miroxlav
En C# Je fais ceci:
if (txtModelPN != this.ActiveControl)
txtModelPN.BackColor = Color.White;
txtModelPN est une zone de texte que je suis en train de mettre en surbrillance sur enter et mouseEnter et surlignage sur Leave, MouseLeave. Sauf s'il s'agit du contrôle actuel, je ne remets pas l'arrière-plan au blanc.
L'équivalent VB serait comme ce
IF txtModelPN <> Me.ActiveControl Then
txtModelPN.BackColor = Color.White
End If
Notez qu'un seul appel à ActiveControl ne suffit pas quand les hiérarchies sont utilisées. Imaginez:
Form
TableLayoutPanel
FlowLayoutPanel
TextBox (focused)
(formInstance).ActiveControl
retournera référence à TableLayoutPanel
, pas le TextBox
Il faut donc utiliser cette (divulgation complète: adapté de this C# answer)
Function FindFocussedControl(ByVal ctr As Control) As Control
Dim container As ContainerControl = TryCast(ctr, ContainerControl)
Do While (container IsNot Nothing)
ctr = container.ActiveControl
container = TryCast(ctr, ContainerControl)
Loop
Return ctr
End Function
Vous pouvez l'utiliser pour trouver par nom de contrôle .
If DataGridView1.Name = Me.ActiveControl.Name Then
TextBox1.Visible = True
Else
TextBox1.Visible = False
End If
Vous pouvez utiliser la propriété ActiveControl du formulaire et utiliser ce contrôle.
me.ActiveControl
Ou
Form.ActiveControl
- 1. Déterminer quel élément a le focus
- 2. Trouver quel composant asp.net a le focus
- 3. Y at-il un moyen de savoir quel élément a le focus dans une application WPF?
- 4. Le contrôle Windows Forms de databound ne reconnaît pas les modifications avant de perdre le focus
- 5. Contrôle du panneau d'autohopping pour Windows Forms
- 6. Contrôle utilisateur Cliquez sur - Windows Forms
- 7. Contrôle de liste déroulante avancé gratuit (Windows Forms .Net)
- 8. .NET Windows Forms Refresh Control
- 9. Spellchecker pour Windows Forms .NET
- 10. Vérifier si un objet a le focus
- 11. Comment changer le focus dans X-Windows?
- 12. Better TreeView pour Windows Forms - .NET 3.5
- 13. AS3 - Sortie quel objet a le focus clavier?
- 14. Comment déterminer si une zone de texte dans un formulaire Windows a le focus
- 15. wpf listview a perdu le focus
- 16. Comment savoir quel module de formulaire a appelé votre classe
- 17. Comment savoir quelle fenêtre a le focus et comment la changer?
- 18. Iterop Forms Toolkit validation et focus événements
- 19. Problème de déploiement Windows Forms C# .net
- 20. Création d'un contrôle Windows Forms (C++)
- 21. Comment faire un contrôle Windows Forms en lecture seule?
- 22. Réutiliser un contrôle dans un autre projet Windows Forms
- 23. Comment puis-je savoir quel TextBox avait le focus en dernier?
- 24. Comment actualiser une liaison simple d'un contrôle Windows Forms?
- 25. Obtenir un contrôle Windows Forms par nom dans C#
- 26. Comment savoir quel contrat a échoué avec contract.py de Python?
- 27. Comment savoir quel compilateur a été utilisé: g77 ou gfortran
- 28. Flex: Comment savoir si TextArea a le curseur clignotant
- 29. Zone de texte décimal dans Windows Forms
- 30. Pour afficher un contrôle dans deux Windows Forms
veux juste souligner que si vous avez changé quelque chose (définir une propriété .Text par exemple), il retournera le contrôle que la dernière utilisation. y compris le réglage des choses comme le .Text pas toujours le contrôle qui a le focus – PsychoData