[C#] タブコントロールの切り替え方法と実装例
C#でタブコントロールを切り替える方法は、Windows FormsアプリケーションでTabControl
を使用することが一般的です。
TabControl
には複数のTabPage
を追加でき、ユーザーがタブをクリックすることでページを切り替えられます。
プログラムでタブを切り替えるには、TabControl.SelectedIndex
プロパティを設定します。
例えば、tabControl1.SelectedIndex = 1;
とすることで、2番目のタブに切り替えられます。
また、SelectedTab
プロパティを使用して特定のTabPage
を選択することも可能です。
タブの切り替えイベントを処理するには、SelectedIndexChanged
イベントを利用します。
これにより、タブが切り替わった際に特定の処理を実行できます。
タブの切り替え方法
C#のWindowsフォームアプリケーションでタブコントロールを使用する際、タブの切り替えは非常に重要な操作です。
ここでは、タブの切り替え方法について、主に3つのプロパティとイベントを用いた方法を解説します。
SelectedIndexプロパティの使用
SelectedIndex
プロパティは、タブコントロール内の現在選択されているタブのインデックスを取得または設定するために使用します。
このプロパティを利用することで、プログラムから特定のタブを選択することができます。
using System;
using System.Windows.Forms;
public partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
// タブコントロールのインスタンスを作成
TabControl tabControl = new TabControl();
// タブページを追加
tabControl.TabPages.Add("タブ1");
tabControl.TabPages.Add("タブ2");
// タブのインデックスを設定して切り替え
tabControl.SelectedIndex = 1; // 2番目のタブを選択
// フォームにタブコントロールを追加
this.Controls.Add(tabControl);
}
}
アプリケーションを起動すると、2番目のタブが選択された状態で表示されます。
SelectedTabプロパティの使用
SelectedTab
プロパティは、現在選択されているタブページを取得または設定するために使用します。
このプロパティを利用することで、タブページオブジェクトを直接操作してタブを切り替えることができます。
using System;
using System.Windows.Forms;
public partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
// タブコントロールのインスタンスを作成
TabControl tabControl = new TabControl();
// タブページを追加
TabPage tabPage1 = new TabPage("タブ1");
TabPage tabPage2 = new TabPage("タブ2");
tabControl.TabPages.Add(tabPage1);
tabControl.TabPages.Add(tabPage2);
// タブページオブジェクトを使用して切り替え
tabControl.SelectedTab = tabPage2; // 2番目のタブを選択
// フォームにタブコントロールを追加
this.Controls.Add(tabControl);
}
}
アプリケーションを起動すると、2番目のタブが選択された状態で表示されます。
タブ切り替えイベントの活用
タブの切り替え時に特定の処理を実行したい場合、SelectedIndexChanged
イベントを活用します。
このイベントは、タブの選択が変更されたときに発生します。
using System;
using System.Windows.Forms;
public partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
// タブコントロールのインスタンスを作成
TabControl tabControl = new TabControl();
// タブページを追加
tabControl.TabPages.Add("タブ1");
tabControl.TabPages.Add("タブ2");
// イベントハンドラを追加
tabControl.SelectedIndexChanged += new EventHandler(TabControl_SelectedIndexChanged);
// フォームにタブコントロールを追加
this.Controls.Add(tabControl);
}
// タブが切り替わったときに呼び出されるメソッド
private void TabControl_SelectedIndexChanged(object sender, EventArgs e)
{
MessageBox.Show("タブが切り替わりました");
}
}
タブを切り替えると、メッセージボックスが表示され、「タブが切り替わりました」と通知されます。
これらの方法を組み合わせることで、タブコントロールの操作を柔軟に行うことができます。
タブコントロールの応用例
タブコントロールは、基本的なタブの切り替え以外にもさまざまな応用が可能です。
ここでは、動的にタブを追加する方法、タブの表示・非表示の切り替え、そしてタブのカスタム描画について解説します。
動的にタブを追加する方法
アプリケーションの実行中にタブを追加することができます。
これにより、ユーザーの操作に応じてタブを増やすことが可能です。
using System;
using System.Windows.Forms;
public partial class MyForm : Form
{
private TabControl tabControl;
public MyForm()
{
InitializeComponent();
// タブコントロールのインスタンスを作成
tabControl = new TabControl();
// 初期タブページを追加
tabControl.TabPages.Add("初期タブ");
// ボタンを作成してタブを追加する
Button addButton = new Button();
addButton.Text = "タブを追加";
addButton.Click += new EventHandler(AddTab);
// フォームにコントロールを追加
this.Controls.Add(tabControl);
this.Controls.Add(addButton);
}
// ボタンがクリックされたときに呼び出されるメソッド
private void AddTab(object sender, EventArgs e)
{
int newIndex = tabControl.TabPages.Count + 1;
tabControl.TabPages.Add("タブ" + newIndex);
}
}
「タブを追加」ボタンをクリックするたびに、新しいタブが追加されます。
タブの非表示と表示の切り替え
タブコントロールでは、特定のタブを非表示にしたり再表示したりすることができます。
これにより、ユーザーの操作や状態に応じてタブの表示を制御できます。
using System;
using System.Windows.Forms;
public partial class MyForm : Form
{
private TabControl tabControl;
private TabPage hiddenTab;
public MyForm()
{
InitializeComponent();
// タブコントロールのインスタンスを作成
tabControl = new TabControl();
// タブページを追加
tabControl.TabPages.Add("タブ1");
hiddenTab = new TabPage("隠しタブ");
tabControl.TabPages.Add(hiddenTab);
// ボタンを作成してタブを非表示にする
Button hideButton = new Button();
hideButton.Text = "タブを非表示";
hideButton.Click += new EventHandler(HideTab);
// ボタンを作成してタブを表示する
Button showButton = new Button();
showButton.Text = "タブを表示";
showButton.Click += new EventHandler(ShowTab);
// フォームにコントロールを追加
this.Controls.Add(tabControl);
this.Controls.Add(hideButton);
this.Controls.Add(showButton);
}
// タブを非表示にするメソッド
private void HideTab(object sender, EventArgs e)
{
tabControl.TabPages.Remove(hiddenTab);
}
// タブを表示するメソッド
private void ShowTab(object sender, EventArgs e)
{
if (!tabControl.TabPages.Contains(hiddenTab))
{
tabControl.TabPages.Add(hiddenTab);
}
}
}
「タブを非表示」ボタンをクリックすると、指定したタブが非表示になります。「タブを表示」ボタンをクリックすると、再び表示されます。
タブのカスタム描画
タブコントロールの外観をカスタマイズするために、タブを自分で描画することができます。
これにより、デザインに合わせた独自のタブを作成できます。
using System;
using System.Drawing;
using System.Windows.Forms;
public partial class MyForm : Form
{
private TabControl tabControl;
public MyForm()
{
InitializeComponent();
// タブコントロールのインスタンスを作成
tabControl = new TabControl();
// タブページを追加
tabControl.TabPages.Add("タブ1");
tabControl.TabPages.Add("タブ2");
// カスタム描画を有効にする
tabControl.DrawMode = TabDrawMode.OwnerDrawFixed;
tabControl.DrawItem += new DrawItemEventHandler(DrawTab);
// フォームにタブコントロールを追加
this.Controls.Add(tabControl);
}
// タブをカスタム描画するメソッド
private void DrawTab(object sender, DrawItemEventArgs e)
{
Graphics g = e.Graphics;
Brush textBrush = new SolidBrush(Color.Black);
// タブの背景を描画
Rectangle tabRect = tabControl.GetTabRect(e.Index);
g.FillRectangle(Brushes.LightBlue, tabRect);
// タブのテキストを描画
string tabText = tabControl.TabPages[e.Index].Text;
g.DrawString(tabText, e.Font, textBrush, tabRect.X + 3, tabRect.Y + 3);
}
}
タブが水色の背景で描画され、テキストが黒色で表示されます。これにより、タブの外観をカスタマイズできます。

これらの応用例を活用することで、タブコントロールをより柔軟に操作し、ユーザーインターフェースを向上させることができます。
まとめ
この記事では、C#のWindowsフォームアプリケーションにおけるタブコントロールの切り替え方法や応用例について詳しく解説しました。
タブの切り替え方法として、SelectedIndex
プロパティやSelectedTab
プロパティ、タブ切り替えイベントの活用法を紹介し、さらに動的なタブの追加やタブの表示・非表示の切り替え、カスタム描画によるデザインの変更方法についても触れました。
これらの知識を活用して、より柔軟でユーザーにとって使いやすいインターフェースを構築してみてください。