フォーカスのあるコントロールの次のコントロールにフォーカスを移す - 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を愛用