【C#】リストビューの項目追加・削除・選択行取得・自動幅調整

C#

この記事では、ListViewコントロールを使用して以下の処理を行うサンプルを掲載します。

・行全体を選択
・複数行選択可能
・ボタンクリックで行追加
・ボタンクリックで行削除
・ボタンクリックで選択行を出力に表示
・ボタンクリックで列幅を自動調整

細かい部分は調整して自分の作りたい動作にしてください。

準備

フォームにコントロールを配置してください。

・リストビュー(listView1)
・ボタン4つ(btnAdd, btnDelete, btnShow, btnResize)

サンプルコード

ボタンのイベントハンドラを作成して下記処理を転記してください。
各処理の説明はコメントを参照ください。

using System;
using System.Windows.Forms;

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

            // リストビューの初期化(GUI上で設定する場合、このメソッド呼び出しは不要)
            InitializeListView();
        }

        // リストビューの初期化(GUI上で設定する場合、このメソッドは不要)
        private void InitializeListView()
        {
            // ListViewの列を設定
            listView1.Columns.Add("列1", -2, HorizontalAlignment.Left);
            listView1.Columns.Add("列2", -2, HorizontalAlignment.Left);
            listView1.Columns.Add("列3", -2, HorizontalAlignment.Left);

            // 行全体を選択可能に設定
            listView1.FullRowSelect = true;

            // 複数行選択を許可
            listView1.MultiSelect = true;

            // 表示スタイルを詳細ビューに設定
            listView1.View = View.Details;
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            // 行の追加
            listView1.Items.Add(new ListViewItem(new string[] { "新行1", "新行2", "新行3" }));
        }

        private void btnDelete_Click(object sender, EventArgs e)
        {
            // 選択された行を削除
            foreach (ListViewItem item in listView1.SelectedItems)
            {
                listView1.Items.Remove(item);
            }
        }

        private void btnShow_Click(object sender, EventArgs e)
        {
            // 選択された行の内容を表示
            foreach (ListViewItem item in listView1.SelectedItems)
            {
                MessageBox.Show($"選択された行: {item.Text}, {item.SubItems[1].Text}, {item.SubItems[2].Text}");
            }
        }

        private void btnResize_Click(object sender, EventArgs e)
        {
            // すべての列の幅を、その内容に合わせて自動調整
            listView1.AutoResizeColumn(0, ColumnHeaderAutoResizeStyle.ColumnContent);
            listView1.AutoResizeColumn(1, ColumnHeaderAutoResizeStyle.ColumnContent);
            listView1.AutoResizeColumn(2, ColumnHeaderAutoResizeStyle.ColumnContent);
        }
    }
}

タイトルとURLをコピーしました