C# 任意のコントロールへフォーカスをあてる方法

今回はC#で任意のコントロールにフォーカスをあてる方法を紹介していきます。
利用方法はとても簡単なのですが、1点注意点があるので、そこを備忘録として残しておきます。

最初に結論を紹介していきます。
コントロールにフォーカスを充てるには、「ActiveControl」と「Focus」を利用する必要があります。

  • ロードイベントの時、「ActiveControl = 任意のコントロール名」
  • その他イベントの時、「コントロール名.Focus();」

ロード時の場合はActiveControlを利用しないとフォーカスが当たらないので注意してください。

 

ロード処理時、各コントロールにフォーカスをあてる

ここからは、例を紹介してきます。
ロード処理の場合は、「ActiveControl」を利用します。

フォームに4つのテキストボックスを用意し、左から順に「textBox1」「textBox2」「textBox3」「textBox4」となっています。

一番右のテキストボックスにフォーカスをあてていきます。

private void frmForcus_Load(object sender, EventArgs e)
{
    ActiveControl = textBox4;
}

 

結果

ロード処理時に一番右のテキストボックスにフォーカスが当たっていますね。

各コントロールにフォーカスをあてる

続いて、ロード処理以外のイベントの際にフォーカスをあてる方法を紹介していきます。
ロード処理以外のイベントの際には「Focus」を利用します。

一番右のテキストボックスで「Enter」を入力して際に一番左にフォーカスをあてるよう処理を作成していきます。

private void textBox4_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        textBox1.Focus();
    }
}

 

実際に一番右のテキストボックスからフォーカスが一番左のテキストボックスに移動しました。

サンプルソース

最後にサンプルソースを載せておきます。

using System;
using System.Windows.Forms;

namespace c_sharp
{
    public partial class frmForcus : Form
    {
        public frmForcus()
        {
            InitializeComponent();
        }

        private void frmForcus_Load(object sender, EventArgs e)
        {
            ActiveControl = textBox4;
        }

        private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                textBox2.Focus();
            }
        }

        private void textBox2_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                textBox3.Focus();
            }
        }

        private void textBox3_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                textBox4.Focus();
            }
        }

        private void textBox4_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                textBox1.Focus();
            }
        }
    }
}

 

まとめ

今回は、各コントロールにフォーカスをあてる方法を紹介しています。

  • ロードイベントの時、「ActiveControl 」
  • その他イベントの時、「Focus」

ロード処理時に、「textBox4.Foucs();」と記載してもフォーカスが当たらないので、注意しましょう。
私も業務で良く忘れてしまうので、備忘録として残しておきました。

 

C#の記事一覧

おすすめの記事