はじめに
Windows Formsアプリケーション開発において、ユーザーがリストから項目を選択した際に、その選択に応じて他のコントロールの表示を更新したり、関連する処理を実行したりすることはよくあります。CheckedListBoxコントロールのSelectedIndexChangedイベントは、選択されている項目が変更された時に発生するイベントであり、このイベントを利用することで、選択項目に応じて柔軟な連動処理を実現できます。この記事では、SelectedIndexChangedイベントの概要と、その活用方法について、業務シナリオを交えながら解説します。
SelectedIndexChangedイベントの概要
SelectedIndexChangedイベントは、CheckedListBoxコントロールで現在選択されている項目が変更されたときに発生します。このイベントは、ユーザーがリスト内の項目をクリックして選択を変更した場合、またはプログラム的に選択項目が変更された場合に発生します。SelectedIndexChangedイベントのイベントハンドラでは、EventArgs型の引数を受け取ります。この引数には、選択された項目の情報は含まれていませんが、コントロールのプロパティ(SelectedIndexやSelectedItem)にアクセスすることで、選択された項目のインデックスやオブジェクトを取得できます。
業務アプリケーションでは、SelectedIndexChangedイベントを使用して、選択された項目に応じて詳細情報を表示する、関連するデータの絞り込みを行う、他のコントロールの有効/無効状態を変更するなど、さまざまな連動処理を実現できます。例えば、顧客リストから顧客を選択した際に、その顧客の詳細情報を表示する、タスクリストからタスクを選択した際に、そのタスクの進捗状況を表示するなど、選択された項目に応じて表示内容が変わるようなUIを構築できます。
コード例
以下のコード例では、CheckedListBoxコントロールを作成し、SelectedIndexChangedイベントを処理しています。選択された項目に応じて、ラベルにその項目のテキストを表示する例を示します。また、関連する情報を取得する例として、選択された項目のインデックスをメッセージボックスに表示します。
using System;
using System.Drawing;
using System.Windows.Forms;
namespace CheckedListBoxSample
{
private CheckedListBox checkedListBox;
private Label selectedItemLabel;
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
InitializeCheckedListBox();
}
private void InitializeCheckedListBox()
{
checkedListBox.SelectedIndexChanged += new EventHandler(CheckedListBox_SelectedIndexChanged);
// 項目を追加
checkedListBox.Items.Add("項目1");
checkedListBox.Items.Add("項目2");
checkedListBox.Items.Add("項目3");
// Labelコントロールを作成
selectedItemLabel = new Label();
selectedItemLabel.Location = new Point(50, 220);
selectedItemLabel.Size = new Size(200, 20);
// フォームに追加
this.Controls.Add(checkedListBox);
this.Controls.Add(selectedItemLabel);
}
private void CheckedListBox_SelectedIndexChanged(object sender, EventArgs e)
{
CheckedListBox checkedListBox = (CheckedListBox)sender;
if (checkedListBox.SelectedItem != null)
{
//選択された項目のテキストをラベルに表示
selectedItemLabel.Text = $"選択された項目: {checkedListBox.SelectedItem.ToString()}";
//選択された項目のインデックスをメッセージボックスに表示
MessageBox.Show($"選択された項目のインデックス: {checkedListBox.SelectedIndex}", "通知");
}
else
{
selectedItemLabel.Text = $"選択された項目: なし";
}
}
}
}
コード解説
usingディレクティブ:
System, System.Drawing, System.Windows.Forms 名前空間をインポートします。これらの名前空間は、基本クラス、描画関連クラス、Windowsフォーム関連クラスを提供します。
InitializeControlsメソッド:
CheckedListBoxコントロールを作成し、Locationプロパティで配置位置、Sizeプロパティで大きさを設定します。
SelectedIndexChangedイベントにCheckedListBox_SelectedIndexChangedメソッドをイベントハンドラとして登録します。
項目を追加します。
ラベルコントロールを作成し、フォームに追加します。
作成したコントロールをフォームに追加します。
CheckedListBox_SelectedIndexChangedメソッド:
EventArgs型の引数eを受け取り、選択された項目の情報を取得します。
SelectedItemプロパティを使用して選択された項目のテキストを取得し、ラベルに表示します。
SelectedIndexプロパティを使用して選択された項目のインデックスを取得し、メッセージボックスに表示します。
まとめ
CheckedListBoxコントロールのSelectedIndexChangedイベントは、選択項目の変更を検知し、他のコントロールとの連動処理を実現するための重要なイベントです。このイベントを利用することで、選択された項目に応じて表示内容を動的に変更し、ユーザーエクスペリエンスを向上させることができます。業務アプリケーション開発においては、SelectedIndexChangedイベントを適切に活用し、より使いやすく、効率的なアプリケーションを構築することが重要です。


コメント