2009-06-30 12 views
7

ラベル、テキストボックス、ボタン付きのフォームを作成しました。フォームのロードイベントでは、テキストボックスのfocus()関数を呼び出しました。しかし、私は私のコードを実行するときにカーソルがテキストボックスに来ていません。私は、フォームがロードされるとすぐにテキストボックスに移動するカーソルが必要です。どうやってするの?テキストボックスにフォーカス

答えて

7

あなたは、単に特定のコントロールは、あなたが最初にフォームをロードしたときにフォーカスを取得し、当該制御が「0」のように、その後、すべてのあなたのコントロール(デザイナー)でのTabOrderプロパティを変更することを確認する必要がある場合

ある条件に応じてフォームを表示するときに、別のコントロールを動的に選択する必要がある場合は、次のコードを使用します。

private void Form1_Load(object sender, EventArgs e) { 
    // You need to show the form otherwise setting focus does nothing 
    // (there are no controls to set focus to yet!) 
    this.Show() 
    if (someCondition == true) 
     control.Focus(); 
    else 
     control2.Focus(); 
} 
+0

「フォーカス」は、フォームに表示されるイベントに設定できます。 –

+1

+1:コントロールの正しいタブ順序を設定し、フレームワークに仕事をさせます。 –

+4

特定のタブ順序が必要な場合がありますが、0のタブ順序プロパティで開始したくない場合があります。 –

3

代わりにShownイベントを処理します。このコードはうまくいくはずです。

private void Form1_Shown(object sender, EventArgs e) 
{ 
    textBox2.Focus(); 
} 
+0

+1。 –

+0

これは、アクティブなソリューションと同じ問題を抱えています。同じフォームを隠している/表示している場合、常にフォーカスがリセットされます。これは良いことかもしれません。 –

1

LoadでFocusを呼び出さないイベント。 Activateイベントで呼び出します。それは動作します

+0

また、フォームがアクティブになるたびにテキストボックスにフォーカスが掛かります。これは望ましくない可能性があります。 –

+0

はい。私はその詳細を逃した – Sahas

+0

これはどちらが良い方法でしょうか?イベントを有効にするか、TabOrderを設定しますか? – Vicky

1

フォームロード時に常にテキストボックスにフォーカスを当てたい場合は、TextBoxのTabIndexプロパティを0に設定できます。私はそれが動作しますが、これを試してみました(このプロパティは常に、最終的form.designer.csに設定されている。そして、あなたはあなたのform.cs.で余分なコードを記述する必要はありません)

関連する問題