Po otwarciu formularza system automatycznie ustawia jeden z elementów sterujących za Ciebie. O ile mogę powiedzieć, kontrola, która dostaje fokus, jest pierwszą aktywowaną kontrolką w kolejności tabulacji, zgodnie ze standardowym zachowaniem Windows.Jak określić, która kontrola powinna być skupiona podczas otwierania formularza?
Pytanie, jak to zmienić w czasie wykonywania, bez konieczności dynamicznego zmieniania kolejności tabulatorów. Na przykład, niektóre formularze mogą chcieć zróżnicować kontrolę skoncentrowaną początkowo w oparciu o logikę programu, aby skupić się na najbardziej odpowiedniej kontroli. Jeśli skupisz się tylko na innej kontrolce wewnątrz twojej obsługi OnLoad
, domyślna logika i tak zostanie wykonana i ponownie skupia kontrolę domyślną.
Jeśli piszesz w C/C++ i stosując surowe procedury okna lub MFC można powrócić 0 (FALSE
) z obsługi WM_INITDIALOG
, a domyślne koncentrując logiki zostanie pominięty. Jednak nie mogę znaleźć sposobu, aby to zrobić w Windows Forms. Najlepszym Mam wymyślić jest użycie BeginInvoke
aby ustawić ostrość po OnLoad
wykończeniach, tak:
protected override void OnLoad(System.EventArgs e)
{
base.OnLoad(e);
// ... code ...
BeginInvoke(new MethodInvoker(() => this.someControl.Focus()));
}
Musi być jakiś właściwy sposób to zrobić - co to jest?
Dzięki. To działa! –
nie tylko wybór pokazuje na contole, ale nie jest w stanie pisać na wybranym polu tekstowym lub kolejność tabulacji również nie przejść do następnego. –