[C#] ListBoxで選択されたアイテムを取得する方法

C#でListBoxから選択されたアイテムを取得するには、ListBoxコントロールのSelectedItemプロパティを使用します。

このプロパティは、現在選択されているアイテムを返します。

例えば、listBox1.SelectedItemを使って選択されたアイテムを取得できます。

選択されたアイテムが文字列である場合は、ToString()メソッドを使用して文字列として取得することも可能です。

また、複数選択が可能な場合は、SelectedItemsプロパティを使用して選択されたすべてのアイテムを取得できます。

これにより、選択されたアイテムをリストや配列として処理することができます。

この記事でわかること
  • ListBoxから選択されたアイテムの取得方法
  • 選択されたアイテムの操作方法
  • 選択されたアイテムの応用例
  • プログラムで選択を変更する方法

目次から探す

選択されたアイテムの取得方法

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から選択されたアイテムのインデックスを取得し、メッセージボックスで表示します。

選択されていない場合は、その旨を通知します。

選択されたアイテムの操作

選択されたアイテムの表示

選択されたアイテムを表示するには、ListBoxSelectedItemプロパティを使用します。

以下のサンプルコードでは、ボタンをクリックすることで選択されたアイテムをメッセージボックスに表示します。

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("アイテムが選択されていません。");
        }
    }
}

このコードでは、ボタンがクリックされたときに選択されたアイテムを取得し、メッセージボックスで表示します。

選択されていない場合は、その旨を通知します。

選択されたアイテムの削除

選択されたアイテムを削除するには、ListBoxItemsコレクションから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ファイルに書き出します。

選択されていない場合は、その旨を通知します。

よくある質問

ListBoxで選択されたアイテムがnullになるのはなぜ?

ListBoxで選択されたアイテムがnullになる主な理由は、ユーザーが何も選択していない場合です。

ListBoxSelectedItemプロパティは、選択されているアイテムがないときにnullを返します。

以下のような状況が考えられます。

  • ユーザーがアイテムを選択していない。
  • ListBoxが初期化されたときに、アイテムが追加されていない。
  • プログラムでアイテムを削除した後、選択が解除された。

このような場合、選択されたアイテムがnullであることを考慮して、適切なエラーハンドリングを行うことが重要です。

複数選択時に特定のアイテムだけを取得するには?

ListBoxが複数選択可能な場合、特定のアイテムだけを取得するには、SelectedItemsプロパティを使用して選択されたアイテムのコレクションを取得し、必要な条件に基づいてフィルタリングすることができます。

以下の方法で特定のアイテムを取得できます。

  1. SelectedItemsをループして、条件に合うアイテムを探す。
  2. 条件に合ったアイテムを新しいリストに追加する。

例えば、特定の文字列を含むアイテムだけを取得する場合、次のようなコードを使用します。

foreach (var item in listBox1.SelectedItems)
{
    if (item.ToString().Contains("特定の文字列"))
    {
        // 条件に合うアイテムを処理
    }
}

ListBoxの選択をプログラムで変更する方法は?

ListBoxの選択をプログラムで変更するには、SelectedIndexプロパティやSetSelectedメソッドを使用します。

これにより、特定のアイテムを選択したり、選択を解除したりすることができます。

以下の方法で選択を変更できます。

  • SelectedIndexプロパティを使用して、特定のインデックスのアイテムを選択する。
  • SetSelectedメソッドを使用して、特定のインデックスのアイテムの選択状態を変更する。

例えば、最初のアイテムを選択する場合、次のように記述します。

listBox1.SelectedIndex = 0; // 最初のアイテムを選択

また、特定のアイテムを選択状態にする場合は、次のようにします。

listBox1.SetSelected(1, true); // インデックス1のアイテムを選択

このようにして、プログラムからListBoxの選択状態を自由に変更することができます。

まとめ

この記事では、C#のListBoxコントロールを使用して選択されたアイテムを取得し、操作する方法について詳しく解説しました。

具体的には、選択されたアイテムの取得方法や表示、削除、編集、さらには応用例として別のコントロールへの表示やデータベースへの保存、ファイルへの書き出しについて触れました。

これらの知識を活用して、実際のアプリケーションにおいてListBoxを効果的に利用し、ユーザーインターフェースをより充実させることができるでしょう。

ぜひ、実際にコードを試してみて、ListBoxの機能を自分のプロジェクトに取り入れてみてください。

  • URLをコピーしました!
目次から探す