[C#] ListBoxで選択されたアイテムを取得する方法
C#でListBoxから選択されたアイテムを取得するには、ListBoxコントロールのSelectedItemプロパティを使用します。
このプロパティは、現在選択されているアイテムを返します。
例えば、listBox1.SelectedItemを使って選択されたアイテムを取得できます。
選択されたアイテムが文字列である場合は、ToString()メソッドを使用して文字列として取得することも可能です。
また、複数選択が可能な場合は、SelectedItemsプロパティを使用して選択されたすべてのアイテムを取得できます。
これにより、選択されたアイテムをリストや配列として処理することができます。
選択されたアイテムの取得方法
SelectedItemプロパティの使用
ListBoxコントロールから選択されたアイテムを取得する最も基本的な方法は、SelectedItemプロパティを使用することです。
このプロパティは、現在選択されているアイテムを返します。
以下は、SelectedItemを使用して選択されたアイテムを取得するサンプルコードです。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
}
private void buttonGetSelectedItem_Click(object sender, EventArgs e)
{
// ListBoxから選択されたアイテムを取得
var selectedItem = listBox1.SelectedItem;
// 選択されたアイテムがnullでない場合
if (selectedItem != null)
{
// 選択されたアイテムを表示
MessageBox.Show($"選択されたアイテム: {selectedItem.ToString()}");
}
else
{
// アイテムが選択されていない場合
MessageBox.Show("アイテムが選択されていません。");
}
}
}このコードでは、ボタンがクリックされたときにListBoxから選択されたアイテムを取得し、メッセージボックスで表示します。
選択されていない場合は、その旨を通知します。
SelectedItemsプロパティの使用
ListBoxが複数選択可能な場合、SelectedItemsプロパティを使用して選択されたすべてのアイテムを取得できます。
このプロパティは、選択されたアイテムのコレクションを返します。
以下は、SelectedItemsを使用して選択されたアイテムを取得するサンプルコードです。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
}
private void buttonGetSelectedItems_Click(object sender, EventArgs e)
{
// ListBoxから選択されたアイテムを取得
var selectedItems = listBox1.SelectedItems;
// 選択されたアイテムが存在する場合
if (selectedItems.Count > 0)
{
string items = "選択されたアイテム:\n";
foreach (var item in selectedItems)
{
items += item.ToString() + "\n"; // 各アイテムを追加
}
MessageBox.Show(items);
}
else
{
// アイテムが選択されていない場合
MessageBox.Show("アイテムが選択されていません。");
}
}
}このコードでは、ボタンがクリックされたときにListBoxから選択されたすべてのアイテムを取得し、メッセージボックスで表示します。
選択されていない場合は、その旨を通知します。
選択されたアイテムのインデックス取得
選択されたアイテムのインデックスを取得するには、SelectedIndexプロパティを使用します。
このプロパティは、選択されているアイテムのインデックスを返します。
以下は、SelectedIndexを使用して選択されたアイテムのインデックスを取得するサンプルコードです。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
}
private void buttonGetSelectedIndex_Click(object sender, EventArgs e)
{
// ListBoxから選択されたアイテムのインデックスを取得
int selectedIndex = listBox1.SelectedIndex;
// インデックスが-1でない場合
if (selectedIndex != -1)
{
// 選択されたアイテムのインデックスを表示
MessageBox.Show($"選択されたアイテムのインデックス: {selectedIndex}");
}
else
{
// アイテムが選択されていない場合
MessageBox.Show("アイテムが選択されていません。");
}
}
}このコードでは、ボタンがクリックされたときにListBoxから選択されたアイテムのインデックスを取得し、メッセージボックスで表示します。
選択されていない場合は、その旨を通知します。
選択されたアイテムの操作
選択されたアイテムの表示
選択されたアイテムを表示するには、ListBoxのSelectedItemプロパティを使用します。
以下のサンプルコードでは、ボタンをクリックすることで選択されたアイテムをメッセージボックスに表示します。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
}
private void buttonShowSelectedItem_Click(object sender, EventArgs e)
{
// ListBoxから選択されたアイテムを取得
var selectedItem = listBox1.SelectedItem;
// 選択されたアイテムがnullでない場合
if (selectedItem != null)
{
// 選択されたアイテムを表示
MessageBox.Show($"選択されたアイテム: {selectedItem.ToString()}");
}
else
{
// アイテムが選択されていない場合
MessageBox.Show("アイテムが選択されていません。");
}
}
}このコードでは、ボタンがクリックされたときに選択されたアイテムを取得し、メッセージボックスで表示します。
選択されていない場合は、その旨を通知します。
選択されたアイテムの削除
選択されたアイテムを削除するには、ListBoxのItemsコレクションからRemoveメソッドを使用します。
以下のサンプルコードでは、ボタンをクリックすることで選択されたアイテムを削除します。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
}
private void buttonRemoveSelectedItem_Click(object sender, EventArgs e)
{
// ListBoxから選択されたアイテムを取得
var selectedItem = listBox1.SelectedItem;
// 選択されたアイテムがnullでない場合
if (selectedItem != null)
{
// 選択されたアイテムを削除
listBox1.Items.Remove(selectedItem);
MessageBox.Show("選択されたアイテムを削除しました。");
}
else
{
// アイテムが選択されていない場合
MessageBox.Show("アイテムが選択されていません。");
}
}
}このコードでは、ボタンがクリックされたときに選択されたアイテムを削除し、削除完了のメッセージを表示します。
選択されていない場合は、その旨を通知します。
選択されたアイテムの編集
選択されたアイテムを編集するには、まず選択されたアイテムを取得し、ユーザーに新しい値を入力させるためのダイアログを表示します。
以下のサンプルコードでは、ボタンをクリックすることで選択されたアイテムを編集します。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
}
private void buttonEditSelectedItem_Click(object sender, EventArgs e)
{
// ListBoxから選択されたアイテムを取得
var selectedItem = listBox1.SelectedItem;
// 選択されたアイテムがnullでない場合
if (selectedItem != null)
{
// 新しい値を入力するためのダイアログを表示
string newValue = Microsoft.VisualBasic.Interaction.InputBox("新しい値を入力してください:", "アイテムの編集", selectedItem.ToString());
// 新しい値が空でない場合
if (!string.IsNullOrEmpty(newValue))
{
// 選択されたアイテムを削除
listBox1.Items.Remove(selectedItem);
// 新しい値でアイテムを追加
listBox1.Items.Add(newValue);
MessageBox.Show("アイテムを編集しました。");
}
}
else
{
// アイテムが選択されていない場合
MessageBox.Show("アイテムが選択されていません。");
}
}
}このコードでは、ボタンがクリックされたときに選択されたアイテムを取得し、ユーザーに新しい値を入力させます。
新しい値が入力された場合は、選択されたアイテムを削除し、新しい値でアイテムを追加します。
選択されていない場合は、その旨を通知します。
応用例
選択されたアイテムを別のコントロールに表示
選択されたアイテムを別のコントロール(例えば、TextBox)に表示することができます。
以下のサンプルコードでは、ListBoxから選択されたアイテムをTextBoxに表示します。
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
}
private void buttonDisplayInTextBox_Click(object sender, EventArgs e)
{
// ListBoxから選択されたアイテムを取得
var selectedItem = listBox1.SelectedItem;
// 選択されたアイテムがnullでない場合
if (selectedItem != null)
{
// TextBoxに選択されたアイテムを表示
textBox1.Text = selectedItem.ToString();
}
else
{
// アイテムが選択されていない場合
MessageBox.Show("アイテムが選択されていません。");
}
}
}このコードでは、ボタンがクリックされたときに選択されたアイテムをTextBoxに表示します。
選択されていない場合は、その旨を通知します。
選択されたアイテムをデータベースに保存
選択されたアイテムをデータベースに保存するには、ADO.NETを使用してデータベースに接続し、SQLコマンドを実行します。
以下のサンプルコードでは、選択されたアイテムをSQLiteデータベースに保存します。
using System.Data.SQLite; // SQLiteを使用するための名前空間
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
}
private void buttonSaveToDatabase_Click(object sender, EventArgs e)
{
// ListBoxから選択されたアイテムを取得
var selectedItem = listBox1.SelectedItem;
// 選択されたアイテムがnullでない場合
if (selectedItem != null)
{
// データベース接続
using (var connection = new SQLiteConnection("Data Source=mydatabase.db;Version=3;"))
{
connection.Open();
// SQLコマンドを準備
using (var command = new SQLiteCommand("INSERT INTO MyTable (ItemName) VALUES (@itemName)", connection))
{
command.Parameters.AddWithValue("@itemName", selectedItem.ToString());
command.ExecuteNonQuery(); // コマンドを実行
}
}
MessageBox.Show("選択されたアイテムをデータベースに保存しました。");
}
else
{
// アイテムが選択されていない場合
MessageBox.Show("アイテムが選択されていません。");
}
}
}このコードでは、ボタンがクリックされたときに選択されたアイテムをSQLiteデータベースに保存します。
選択されていない場合は、その旨を通知します。
選択されたアイテムをファイルに書き出し
選択されたアイテムをテキストファイルに書き出すこともできます。
以下のサンプルコードでは、選択されたアイテムをoutput.txtというファイルに書き出します。
using System.IO; // ファイル操作のための名前空間
partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
}
private void buttonWriteToFile_Click(object sender, EventArgs e)
{
// ListBoxから選択されたアイテムを取得
var selectedItem = listBox1.SelectedItem;
// 選択されたアイテムがnullでない場合
if (selectedItem != null)
{
// ファイルに選択されたアイテムを書き出し
File.WriteAllText("output.txt", selectedItem.ToString());
MessageBox.Show("選択されたアイテムをファイルに書き出しました。");
}
else
{
// アイテムが選択されていない場合
MessageBox.Show("アイテムが選択されていません。");
}
}
}このコードでは、ボタンがクリックされたときに選択されたアイテムをoutput.txtファイルに書き出します。
選択されていない場合は、その旨を通知します。
まとめ
この記事では、C#のListBoxコントロールを使用して選択されたアイテムを取得し、操作する方法について詳しく解説しました。
具体的には、選択されたアイテムの取得方法や表示、削除、編集、さらには応用例として別のコントロールへの表示やデータベースへの保存、ファイルへの書き出しについて触れました。
これらの知識を活用して、実際のアプリケーションにおいてListBoxを効果的に利用し、ユーザーインターフェースをより充実させることができるでしょう。
ぜひ、実際にコードを試してみて、ListBoxの機能を自分のプロジェクトに取り入れてみてください。