2012-04-23 5 views
0

私はユーザコントロールを持つダイアログを持っており、タブの行の2番目の行を開始タブに設定しようとしています。私。フォームがアクティブ化されるとき、フォーカスされたコントロールは実際には最もタブオーダーの低いものではありません。 私はプログラムでタブ順でプログラムを選択

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

を使用して、コンストラクタでこれを設定しようとしましたが、「this.ActiveControl」は、その時点でnullです。

誰もがアイデアを持っていますか?

+0

ボーク 'のInitializeComponent()'最初 – Matten

+0

私はすでにそれをやって、とにかく動作しません。 – Mystogan

+0

あなたは大歓迎です。また、あなたがStackOverflowを初めて使用しているので、あなたは良い回答をupvoteでき、Answerの隣にあるチェックマークをチェックすることで一番助けになった答えを受け入れることができます。このサイトでは、upv​​oteまたは受け入れられた答えは「感謝」としてカウントされます。 –

答えて

1

Shownイベントでそれを試してみてください。このイベントは、ウィンドウが実際に表示されるときに呼び出されます。その時点で、すべてのフォーカスが既に完了しており、すべてのコントロールが作成され、フォームが準備完了です。これはコンストラクタまたはLoadのケースではない可能性があります。

+0

このatmを試してみると良い方法のようです。 – Mystogan

+0

これは確かに、私はコントロール内のコントロールに到達しようとしている(そして、ダイアログからのみアクセス可能です)SelectNextControl()は私の子コントロールの上にジャンプしています。 – Mystogan

+0

実際にTabキーを押すか、「トップレベル」のユーザーコントロールだけをアクティブにすると、すべてのコントロール(「埋め込み」のものも)が正しくアクセスされますか? –

1

多分これはそれを行うだろう。

tabControl1.SelectedIndex = 1; 
+0

実際にはタブコントロールではなく、ユーザーコントロールです。私はUserControlsのSelectedIndexを見つけることができませんでした。 – Mystogan

+0

誤解をおかけして申し訳ありません。あなたの質問は私には少し不明でした。プログラムでタブを変更したいと思っていました。 –

+0

Np、とにかく答えてくれてありがとう:) – Mystogan

0

はすぐInitializeComponent()後コンストラクタで呼び出されたときにどちらのバージョンは、仕事

tabControl1.SelectTab(1); 

または

tabControl1.SelectTab("tabPage2"); 

を試してみてください。 (テスト)


EDIT(あなたの明確化後)

これは(今秒)タブでタブ順序の最初と前回の制御(今最初の)最後を制御してください注文。 Tabキーを押すとすべてのコントロールが切り替わります。最後のコントロールに達した後、自動的に最初から再起動するので、必要な動作が得られます。

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

これはTabControlではないので、残念ながらこの機能は動作しません。 – Mystogan

+0

明確にするため、質問のタイトルを変更しました。 –

+0

ありがとう、それをありがとう。 – Mystogan

関連する問題