¿Cómo puedo saber qué control tiene foco en Windows Forms?¿Cómo averiguo qué control tiene foco en .NET Windows Forms?
Respuesta
Form.ActiveControl
puede ser lo que quieras.
Algo a lo largo de estas líneas:
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
Creo que este código de vino de windowsclient.net, pero ha sido un tiempo tan ...
Por favor, déjame downvote la respuesta hasta que lo completes. La llamada de 'GetFocus()' no funciona y la respuesta en esta forma simplemente no funcionará. – miroxlav
En C# hago esto:
if (txtModelPN != this.ActiveControl)
txtModelPN.BackColor = Color.White;
txtModelPN es un cuadro de texto que estoy resaltando al ingresar y al mouseIntroducir y quitar resaltado en Dejar, Dejar de ratón. Excepto si es el control actual, no restablezco el fondo a blanco.
La VB equivalente sería así
IF txtModelPN <> Me.ActiveControl Then
txtModelPN.BackColor = Color.White
End If
Tenga en cuenta que una sola llamada a ActiveControl no es suficiente cuando se utilizan las jerarquías. Imagínese:
Form
TableLayoutPanel
FlowLayoutPanel
TextBox (focused)
(formInstance).ActiveControl
volverá referencia a TableLayoutPanel
, no el TextBox
a fin de utilizar esto (la revelación completa: adaptado 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
Usted puede usar esto para encontrar por Nombre de control .
If DataGridView1.Name = Me.ActiveControl.Name Then
TextBox1.Visible = True
Else
TextBox1.Visible = False
End If
Puede utilizar la propiedad ActiveControl del formulario y puede usar ese control.
me.ActiveControl
O
Form.ActiveControl
- 1. ¿Cómo averiguo qué elemento de GWT tiene foco?
- 2. wxPython: ¿Cómo averiguo qué widget tiene el foco?
- 3. Descubriendo qué control tiene foco
- 4. Windows Forms Separator Control
- 5. ¿Cómo determinar qué control en la forma tiene foco?
- 6. Cómo establecer qué control tiene foco en Inicio de aplicación
- 7. Imagen simple en Windows Forms Control StatusStrip
- 8. Cómo establecer el foco en un control en una aplicación de Windows Forms?
- 9. evento Click para .Net (Windows Forms) control de usuario
- 10. Complex .Net 2.0 Windows Forms control: ¿por dónde empezar?
- 11. Windows Forms control DataGridView tiene diferentes tipos de control en la misma columna
- 12. Windows Forms Control e iframes de WebBrowser
- 13. Windows Forms: capturar MouseWheel
- 14. ¿Cómo abrir una nueva ventana en Windows Forms en .NET?
- 15. El control Data Forms de Windows no reconoce el cambio hasta perder el foco
- 16. Control de usuario Haga clic en - Windows Forms
- 17. .NET SplitContainer usando C# Windows Forms
- 18. Control de panel de autodesplazamiento acoplable para Windows Forms
- 19. Obtenga un control de Windows Forms por nombre en C#
- 20. de línea con control de etiqueta en Windows Forms
- 21. Windows Forms - ErrorProvider + DataGridView
- 22. Buscar un control en Windows Forms por nombre
- 23. Windows Forms .NET 2.0: ¿Cómo dibujar un icono PNG?
- 24. Desventajas para alojar Windows Forms Control en la aplicación WPF?
- 25. ¿Debo elegir Line o FastLine en Windows Forms Chart Control?
- 26. C#: Detectando qué aplicación tiene foco
- 27. Algo nuevo para Windows Forms en .NET 4.0
- 28. ¿Cómo pruebo qué elemento tiene el foco en Selenium RC?
- 29. ¿Cómo saber qué ventana tiene foco y cómo cambiarla?
- 30. Tecla de acceso rápido (no global) en Windows Forms .NET
Sólo quiero señalar que si ha cambiado algo (establecer una propiedad .Texto por ejemplo) devolverá el control que tenían la última. incluso configurar cosas como .Text no siempre el control que tiene el foco – PsychoData