WinFormsを使用したプログラムで、指定したコントロールにフォーカスをセットするには、
通常ではSetFocus()メソッドを使用します。
button1.SetFocus(); |
ですが、FormのLoadイベントでこの方法を使用しても、セットする事ができません。
これは、.NetFrameworkのイベントループ側で以下の処理を行っているためです。
1.親画面からForm.Show()メソッド(又はShowDialog)をコールする ↓ 2.子画面のOnLoad()イベントが指定されていたら、実行する ↓ 3.子画面に配置されているコントロールのTabStopをチェックし、初期フォーカスをセットする ↓ 4.子画面が開く |
このため、上記の2.でフォーカスをセットしても後続の処理でリセットされてしまい、
思ったように動作しません。
これを防ぐには、SetFocusではなく、以下のようにActiveControlに値をセットしてあげればOKです。
private void Form1_Load(object sender, System.EventArgs e) { // 初期フォーカスをセット ActiveControl = button1; } |
関連記事
コメントを残す