Come individuare il controllo attivo in Windows Forms?Come scoprire quale controllo è attivo nei Windows Form di .NET?
risposta
Form.ActiveControl
può essere quello che vuoi.
Qualcosa in questo senso:
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
Penso che questo codice è venuto da windowsclient.net, ma è stato un po 'così ...
Per favore lasciami votare la risposta fino a quando non la completi. La chiamata di 'GetFocus()' non si trova in nessun posto e la risposta in questo modulo semplicemente non funzionerà. – miroxlav
In C# faccio questo:
if (txtModelPN != this.ActiveControl)
txtModelPN.BackColor = Color.White;
txtModelPN è una casella di testo che sto evidenziando su enter e mouseEnter e de-highlighting su Leave, MouseLeave. Tranne se è il controllo corrente, non lo sfondo bianco.
VB equivalente sarebbe come questo
IF txtModelPN <> Me.ActiveControl Then
txtModelPN.BackColor = Color.White
End If
Si noti che una singola chiamata a ActiveControl non è sufficiente quando si utilizzano le gerarchie. Immaginate:
Form
TableLayoutPanel
FlowLayoutPanel
TextBox (focused)
(formInstance).ActiveControl
tornerà riferimento alla TableLayoutPanel
, non il TextBox
Così utilizzare questo (full disclosure: adattato da 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
È possibile utilizzare questo per trovare per nome di controllo .
If DataGridView1.Name = Me.ActiveControl.Name Then
TextBox1.Visible = True
Else
TextBox1.Visible = False
End If
È possibile utilizzare il propert ActiveControl del modulo e utilizzare tale controllo.
me.ActiveControl
O
Form.ActiveControl
- 1. Scoprire quale controllo è attivo
- 2. Come scoprire quale elemento GWT è attivo?
- 3. Clic controllo utente - Windows Form
- 4. Come determinare quale controllo sul modulo è attivo?
- 5. Scoprire quale utente Apache è in esecuzione come in Windows?
- 6. Come impostare quale controllo è attivo su Avvio applicazione
- 7. Complesso .Net 2.0 Controllo Windows Form: da dove iniziare?
- 8. Controllo pannello nascosto mobile per Windows Form
- 9. Controllo WebBrowser di Windows Form e iframe
- 10. Come impostare lo stato attivo su un controllo in un'applicazione Windows Form?
- 11. Il controllo Windows Form di Databound non riconosce il cambiamento fino a perdere lo stato attivo
- 12. Come scoprire quale pacchetto .NET framework nuget target?
- 13. Come scoprire quale versione di webdeploy/msdeploy è attualmente installata?
- 14. Ottenere applicazione che esegue un controllo di Windows Form
- 15. come ottenere le dipendenze iniettate nei costruttori in Windows Form
- 16. Come scoprire quale versione di mod_perl è installata?
- 17. Trova controllo per nome dai controlli di Windows Form
- 18. Posso ospitare un Windows Form all'interno di un controllo
- 19. Come aprire una nuova finestra in Windows Form in .NET?
- 20. Strano comportamento del controllo a combinazione di Windows Form
- 21. Chiamata di un Windows Form da un altro thread (Net)
- 22. Come determinare quale campo di testo è attivo swift
- 23. Windows Form - ErrorProvider + DataGridView
- 24. Windows Form: cattura MouseWheel
- 25. Come scoprire l'attuale contesto di controllo dell'overflow?
- 26. Sospendi ridisegno di Windows Form
- 27. evidenziazione etichette Windows Form
- 28. Qual è il miglior controllo del browser Web da utilizzare nell'applicazione Windows Form?
- 29. Come scoprire con quale sito Sitecore è associato un articolo?
- 30. Come scoprire quale algoritmo [crittografia] è supportato dalla mia JVM?
Voglio solo sottolineare che se è stato cambiato qualcosa (impostare una proprietà .Text per esempio) verrà restituito il controllo che l'ultimo utilizzato. incluso l'impostazione di cose come il .Text non sempre il controllo che ha lo stato attivo – PsychoData