【C#】リストビューに右クリックメニューを追加する

C#

C#でListViewコントロールに右クリックメニューを追加し、選択したリストアイテムの情報を表示するサンプルコードです。

準備

フォーム上にリストビューを配置しておく。名前はlistView1とする。

サンプルコード

以下のサンプルコードは、ListViewに右クリックメニューを追加し、選択したアイテムの情報をMessageBoxで表示するサンプルコードです。

using System;
using System.Windows.Forms;
using System.Diagnostics;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            // リストビュー初期化
            InitializeListView();
            
            // 右クリックメニュー初期化
            InitializeContextMenu();
        }
        // リストビュー初期化
        private void InitializeListView()
        {
            // 行全体を選択可能に設定
            listView1.FullRowSelect = true;

            // ListViewコントロールの設定
            listView1.View = View.Details;
            listView1.Columns.Add("項目名", -2, HorizontalAlignment.Left);
            listView1.Columns.Add("詳細", -2, HorizontalAlignment.Left);

            // テストデータの追加
            listView1.Items.Add(new ListViewItem(new[] { "項目1", "詳細1" }));
            listView1.Items.Add(new ListViewItem(new[] { "項目2", "詳細2" }));
        }
        // 右クリックメニュー初期化
        private void InitializeContextMenu()
        {
            // コンテキストメニューの生成
            ContextMenuStrip contextMenu = new ContextMenuStrip();
            ToolStripMenuItem menuItemShowInfo = new ToolStripMenuItem("情報を表示");
            contextMenu.Items.Add(menuItemShowInfo);

            // コンテキストメニューのイベントハンドラ設定
            menuItemShowInfo.Click += menuItemShowInfo_Click;

            // ListViewにコンテキストメニューを設定
            listView1.ContextMenuStrip = contextMenu;
        }
        // 情報を表示クリック時のイベント処理
        private void menuItemShowInfo_Click(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count > 0)
            {
                // 選択されたアイテムの情報を表示
                ListViewItem item = listView1.SelectedItems[0];
                MessageBox.Show($"項目名: {item.Text}, 詳細: {item.SubItems[1].Text}", "アイテム情報");
            }
        }
    }
}
タイトルとURLをコピーしました