0

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

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

しかし、「this.ActiveControl」はその時点で null です。

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

4

3 に答える 3

1

多分これでうまくいくでしょう:

tabControl1.SelectedIndex = 1;
于 2012-04-23T14:02:57.733 に答える
1

Shownイベントで試してみてください。このイベントは、ウィンドウが実際に表示されると呼び出されます。その時点で、すべてのフォーカスが既に行われ、すべてのコントロールが作成され、フォームの準備が整っています。これは、コンストラクターまたは では当てはまらない場合がありますLoad

于 2012-04-23T14:04:09.173 に答える
0

試す

tabControl1.SelectTab(1);

また

tabControl1.SelectTab("tabPage2");

の直後にコンストラクターで呼び出されると、両方のバージョンが機能しInitializeComponent()ます。(テスト済み)


編集(明確化後)

このコントロール (現在は 2 番目) をタブ オーダーの最初に、前のコントロール (現在は最初のコントロール) をタブ オーダーの最後にします。タブ キーを押すと、すべてのコントロールが循環し、最後のコントロールに到達した後に自動的に最初から再開されるため、目的の動作が得られるはずです。

+---+ +---+ +---+ +---+
| | 4 | | | 1 | | | 2 | | | 3 |
+---+ +---+ +---+ +---+
于 2012-04-23T14:04:21.243 に答える