Was ist der Unterschied zwischen Control.Select () und Control.Focus ()?
In WinForms, setzen Sie den Fokus auf ein bestimmtes Steuerelement, die ich immer scheinen, um wind-up aufrufen Control.Select()
und Control.Focus()
um es an die Arbeit.
Was ist der Unterschied, und ist das der richtige Ansatz?
InformationsquelleAutor der Frage Neil Barnwell | 2009-04-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.focus.aspx
InformationsquelleAutor der Antwort Daniel A. White
Focus() ist die low-level-Funktion, die eigentlich den Fokus setzt.
Select() ist eine übergeordnete Ebene-Methode. Es sieht zunächst iterativ nach oben in die Steuerung der übergeordneten Hierarchie, bis es findet ein container-Steuerelement. Dann setzt es, dass container die ActiveControl-Eigenschaft (die sogenannte Kontrollgruppe). Die Logik dieser Methoden ist nicht einfach aber, und es gibt eine Besondere Behandlung für UserControl-Container.
InformationsquelleAutor der Antwort
Für ein Beispiel, wie diese unterschiedlich sind, wenn Sie versuchen, ein Steuerelement für eine Forms-Anwendung zu Standard-Fokus, wenn Sie es öffnen, nur Select() wird aufgerufen, wenn im Konstruktor nach dem InitializeComponent(). Focus() nicht.
InformationsquelleAutor der Antwort Kyle Breton
Nur um diesen thread hab ich gefunden, dass beim schreiben ein Benutzer-Steuerelement, das andere Steuerelemente verschoben von einer form zur anderen (neu erstellten Formular). In der ursprünglichen form nicht mehr könnte, wählen Sie das Steuerelement aus, aber mit Fokus erlaubt es, so zu tun. Ich denke, dies unterstreicht die Antworten zu den Ebenen funktionieren diese Methoden an. Aber es bedeutet auch, es ist nicht genug einfach zu sagen, verwenden, Wählen Sie auf der höheren Ebene, da wählen Sie nicht mehr funktioniert wie erwartet, auf der orginal-form (nicht, dass es sollte als ich es in einer anderen form - ich akzeptiere, dass)
InformationsquelleAutor der Antwort Tim
Aus der persönlichen Erfahrung, die ich schrieb ein user control Erben die Windows-ComboBox. Ich hatte den code schreiben, überschreiben Sie die
OnEnter
event und ich hatte eine Erklärung, in der es zu sagenJedoch leider wieder die unerwarteten Ergebnis. Wenn ich rief
MyCustomerComboControl.Select
(entweder Geladen, Gezeigt oder Aktivierten Ereignisse) genanntOnEnter
Methode, aber nicht registriert, hatte es den Fokus (d.h. Fokussiert Falsch war) aber wenn ich rief Konzentrieren, es funktionierte. AußerdemSelect
funktionierte, wenn das Formular geöffnet war, d.h. wenn ich ein anderes Steuerelement ausgewählt dann neu gewählt die original-Steuerung alle war in Ordnung. Also in anderen Umständen anders, als mein Szenario, verwenden SieSelect
weil dies so vor.InformationsquelleAutor der Antwort DEVELOPER
Focus(), in manchen Situationen, kann ein Fenster besitzen, die Kontrolle zu gewinnen, den Fokus, wenn es nicht den Fokus haben. Wählen Sie() führt nicht zu einem Schwerpunkt greifen durch das Fenster.
InformationsquelleAutor der Antwort user118708