無論何時打開窗體,系統都會自動爲您設置一個控件。就我所知,按照Windows標準行爲,獲取焦點的控件是按Tab鍵順序排列的第一個啓用的控件。如何指定窗體打開時應關注哪個控件?
問題是如何在運行時更改此選項,而無需動態重新組合標籤順序。例如,某些表單可能希望基於程序邏輯改變最初集中的控制,以便將焦點放在最合適的控制中。如果您只是在OnLoad
處理程序中集中其他控件,則默認邏輯將執行並重新聚焦默認控件。
如果你在C/C++編寫,並使用原始窗口過程或MFC,你可以從你WM_INITDIALOG
處理器0(FALSE
)返回,並且默認聚焦的邏輯都不會被跳過。但是,我找不到任何方式在Windows Forms中執行此操作。我拿出最好是用BeginInvoke
的OnLoad
結束後設置焦點,就像這樣:
protected override void OnLoad(System.EventArgs e)
{
base.OnLoad(e);
// ... code ...
BeginInvoke(new MethodInvoker(() => this.someControl.Focus()));
}
必須有做一些適當的方式 - 是什麼呢?
謝謝 - 這通常用於聚焦控件,但對我描述的情況沒有幫助。 – Charlie 2009-06-16 15:05:49
爲什麼?................ – 2009-06-16 15:40:36
我同意亞當。您需要在表單的啓動週期稍後發生的事件。 – 2009-06-16 15:41:36