2012-04-23 74 views
0

我有一個用戶控件對話框,並試圖設置控件第二個按照Tab鍵順序爲起始選項卡。即當窗體被激活時,焦點控件實際上並不是最低標籤順序的窗體。 我嘗試使用以選項卡順序以編程方式選擇第二個控件

this.SelectNextControl(this.ActiveControl, true, true, true, false); 

但「this.ActiveControl」爲空當時設置這個構造函數。

任何人有想法?

+0

調用'的InitializeComponent()'第一 – Matten 2012-04-23 13:55:22

+0

我這麼做了,不管怎樣都不工作。 – Mystogan 2012-04-23 13:58:02

+0

不客氣。此外,由於您是StackOverflow的新用戶,因此我想告訴您,您可以通過查看答案旁邊的勾號來獲得最佳答案並接受最能幫助您的答案。在這個網站上upvote或接受的答案算作「謝謝」。 – 2012-04-23 14:49:08

回答

1

嘗試,在Shown事件。當窗口實際顯示時調用此事件 - 此時,所有聚焦已完成,所有控件已創建並且表單已準備就緒。構造函數或Load中可能不是這種情況。

+0

嘗試這個atm,看起來是一個好方法。 – Mystogan 2012-04-23 14:12:36

+0

這確實進一步標籤,但因爲我試圖達到控件內的控件(和顯示只能從對話框訪問)SelectNextControl()是跳過我的子控件。 – Mystogan 2012-04-23 14:16:00

+0

如果您實際按下TAB鍵或是否僅激活「頂級」用戶控件,是否所有控件(即使是「嵌入」控件)都可以正確訪問? – 2012-04-23 14:19:34

1

也許這將做到這一點:

tabControl1.SelectedIndex = 1; 
+0

它實際上並不是一個選項卡控件,而是一個用戶控件。我一直無法找到UserControls的SelectedIndex。 – Mystogan 2012-04-23 14:07:48

+0

對不起,誤會。你的問題對我來說有點不清楚。我明白你想以編程方式更改標籤。 – 2012-04-23 14:20:07

+0

Np,謝謝你的回答:) – Mystogan 2012-04-23 14:33:10

0

嘗試

tabControl1.SelectTab(1); 

tabControl1.SelectTab("tabPage2"); 

兩種版本,InitializeComponent()後,立即在構造函數中調用時。 (測試)編輯(後您的澄清)


使這個(現在是第二)控制第一Tab鍵順序和先前的控制(現在是第一個),最後在標籤訂購。由於按Tab鍵在所有控制器中循環,在到達最後一個控制器後自動重新開始,您應該獲得所需的行爲。

 
+---+ +---+ +---+ +---+ 
| 4 | | 1 | | 2 | | 3 | 
+---+ +---+ +---+ +---+ 
+0

它不是一個TabControl,所以這不會很不幸。 – Mystogan 2012-04-23 14:17:41

+0

爲了澄清,更改了您的問題的標題。 – 2012-04-23 14:18:43

+0

謝謝,感謝。 – Mystogan 2012-04-23 14:21:33

相關問題