C#でフォームアプリを作っているとよく使うテキストボックスですが、フォームを表示すると最初にフォーカスが当たっていることが多いです。

そのまま入力する場合などには都合がいいですが、場合によってはフォーカスが外れているほうがいいこともあります。
フォーカスをOKボタンに当てたい場合は、コードを以下のように書きます。
private void Form1_Load(object sender, EventArgs e)
{
this.ActiveControl = button1;
}
実行すると、OKボタンにフォーカスが当たっていることが分かります。

フォーカスを外したい場合には、ActiveControlにnullを入れればいいはずばのですが
private void Form1_Load(object sender, EventArgs e)
{
this.ActiveControl = null;
}
実行してみても外れていません。

いろいろ試したところ、Loadイベントより後に発生するActivatedイベント内に記述すると外れてくれるようになりました。
private void Form1_Activated(object sender, EventArgs e)
{
this.ActiveControl = null;
}

コメント