目次

フォーカスのあるコントロールの次のコントロールにフォーカスを移す - C#

フォーカスのある次のコントロールにフォーカスを移すコードを紹介します。

UI

下図のUIを準備します。Buttonを3つ、TextBoxを3つ配置します。


コード

下記のコードを記述します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace SetFocusToNextControl
{
  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void FormMain_Click(object sender, EventArgs e)
    {
      this.SelectNextControl(this.ActiveControl, true, false, true, true);
    }
  }
}

解説

フォームをクリックすると次のコントロールにフォーカスを移します。
フォームのSelectNextControlメソッドにより次のコントロールにフォーカスを移せます。第一引数は現在フォーカスのあるコントロールを与えます。フォームの場合はActiveControlプロパティにフォーカスのあるコントロールが設定されていますので、これを用います。(詳細はこちらの記事を参照してください)
第二引数はフォーカスの移動方向を示します。"true"の場合は次のコントロールを"false"の場合はひとつ前のコントロールにフォーカスを移します。第三引数はTabStopプロパティを無視するかの設定です。"true"を設定した場合はTabStopプロパティがfalseのコントロールを無視します。第三引数は入れ子のコントロールを含めるか否かを設定します。"true"の場合は入れ子のコントロールを含めます。第四引数は最後のコントロールにフォーカスがある場合、最初のコントロールにフォーカスを移すかの設定です。"true"を設定すると、最後のコントロールにフォーカスがある場合は最初のコントロールにフォーカスを移します。

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。起動時はbutton1にフォーカスがあります。


フォームの背景部分をクリックするとフォーカスが次のコントロールに移ります。


フォームをクリックするたびにフォーカスが移動します。




最後のコントロールにフォーカスがある場合は、最初のコントロールにフォーカスが移ります。



著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2012-06-08
iPentec all rights reserverd.