2008-09-07 18 views
19

TabControlにネストされたTextboxがあるとします。Winforms c# - TabPageの最初の子コントロールにフォーカスを設定

フォームが読み込まれたら、そのTextboxにフォーカスしたいと思います(デフォルトでは、フォーカスはTabControlに設定されています)。

フォームのLoadイベントのtextbox1.focus()を呼び出すだけで動作しないようです。私は、次の操作を行って、それを集中することができた

private void frmMainLoad(object sender, EventArgs e) 
{ 
    foreach (TabPage tab in this.tabControl1.TabPages) 
    { 
     this.tabControl1.SelectedTab = tab; 
    } 
} 

私の質問は:

はこれを行うにはよりエレガントな方法はありますか?

答えて

45

次は、ソリューションです:

private void frmMainLoad(object sender, EventArgs e) 
{ 
    ActiveControl = textBox1; 
} 

私は1つの答えが何であるか全くわからないんだけど、なぜ...より良い質問はしかしだろう。

編集:フォームとTabControlの両方がコンテナであるという事実とは関係がありますが、わかりません。

14

Form_Shown()イベントに入れてみてください。それはコンテナ内にあるため、Form_LoadまたはForm()コンストラクタを使用することはできません。

+2

"上書きされる"。あなたがコントロールをShownにフォーカスすると、別のコントロールにフォーカスを合わせてコールを上書きすることはありません。 – Marek

1

コントロールのControl.Select()をこのコードに追加するだけです。私はエラーがあったときに検証中にコントロールに焦点を当てるためにこれを使用しました。

​​
4

textbox1.Select()の代わりtextbox1.Focus()を使用してみてください。これは数回私を助けた。

1

私は別のユーザーコントロール内にユーザーコントロールを持っていました。 textbox1.Select()は私のために働いたが、textbox1.Focus()は機能しませんでした。

Tabstopをfalse、textbox1.Focus()、TabStop trueに設定することもできます。

0
private void ChildForm1_Load(object sender, EventArgs e) 
     { 
      ActiveControl = txt_fname; 

     } 

私はそれが勝利のタブコントロールまたはオン正常に動作します。このコードを使用しdotnetbar supertab CONTRL

ロードした後、コントロールがタブ順序と集中制御があるに応じて再集中しているので、それがロードでは動作しません
関連する問題