テキストボックスのフォーカスが外れない

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;
}

コメント

タイトルとURLをコピーしました