タイトル
 メニューにないコーナーはTopからいけます
TOP.NETWindowsForm → This Page

.NET プログラミングのコーナー
クラス関連 > コントロール関連 > リストビュー


概要


リストビューの使い方のサンプルです。


サンプルイメージ


サンプル画像


サンプルソース(一部抜粋)

C#

// リストビューにアイコンを関連付け
// (注意)イメージリストにはあらかじめアイコンを4つ登録してあります
ListView1.SmallImageList = ImageList1;
ListView1.LargeImageList = ImageList2;

// リストビューの詳細表示用のヘッダ作成
ListView1.Columns.Add("Item", 100, HorizontalAlignment.Left);
ListView1.Columns.Add("SubItem1", 100, HorizontalAlignment.Left);
ListView1.Columns.Add("SubItem2", 100, HorizontalAlignment.Left);

// 表示形式(リスト, 小さいアイコン, 大きいアイコン, 詳細)
ListView1.View = View.List;
ListView1.View = View.SmallIcon;
ListView1.View = View.LargeIcon;
ListView1.View = View.Details;

// 詳細表示時にヘッダをドラッグ&ドロップで入れ替え可能(ON/OFF)
ListView1.AllowColumnReorder = true;
ListView1.AllowColumnReorder = false;

// チェックボックスの表示(ON/OFF)
ListView1.CheckBoxes = true;
ListView1.CheckBoxes = false;

// 文字の色(黒, 緑, 黄)
ListView1.ForeColor = Color.Black;
ListView1.ForeColor = Color.Green;
ListView1.ForeColor = Color.Yellow;

// 背景色(白, 青, 赤)
ListView1.BackColor = Color.White;
ListView1.BackColor = Color.Blue;
ListView1.BackColor = Color.Red;
// 使用可・不可
ListView1.Enabled = true;
ListView1.Enabled = false;

// 表示・非表示
ListView1.Visible = true;
ListView1.Visible = false;

// 選択時の強調表示
//1番目の項目のみ強調表示, 選択時に行全体を強調表示
ListView1.FullRowSelect = false;
ListView1.FullRowSelect = true;

// 詳細表示時の線(ON/OFF)
ListView1.GridLines = true;
ListView1.GridLines = false;

// クリックすると項目選択, マウスを置くだけで項目選択
ListView1.HoverSelection = false;
ListView1.HoverSelection = true;

// 複数選択(ON/OFF)
ListView1.MultiSelect = true;
ListView1.MultiSelect = false;

// 項目の編集(ON/OFF)
ListView1.LabelEdit = true;
ListView1.LabelEdit = false;

// 項目の追加
private void Button1_Click(object sender, System.EventArgs e)
{
	int intIconIndex;

	// アイコンのインデックス(イメージリストのインデックス)
	intIconIndex = 1;

	// 項目の追加
	// (注意)2つ目の引数はイメージリストのアイコンインデックスです。
	//    アイコンが不要な場合は2つ目の引数は不要です。
	ListView1.Items.Add("AAAAA", intIconIndex);

	// サブ項目の追加
	// (注意)Items[]のインデックスは追加した項目のインデックス
	//    今回は一番後ろに追加したので(項目数 - 1)が追加したインデックスになる
	ListView1.Items[ListView1.Items.Count - 1].SubItems.Add("サブ項目1");
	ListView1.Items[ListView1.Items.Count - 1].SubItems.Add("サブ項目2");
}

// 項目を先頭に挿入
private void Button2_Click(object sender, System.EventArgs e)
{
	int intIconIndex;

	// アイコンのインデックス(イメージリストのインデックス)
	intIconIndex = 1;

	// 項目の追加
	// (注意)2つ目の引数はイメージリストのアイコンインデックスです。
	//    アイコンが不要な場合は2つ目の引数は不要です。
	ListView1.Items.Insert(0, "AAAAA", intIconIndex);

	// サブ項目の追加
	// (注意)Items[]のインデックスは追加した項目のインデックス
	//    今回は一番先頭に挿入したのでゼロになる
	ListView1.Items[0].SubItems.Add("サブ項目1");
	ListView1.Items[0].SubItems.Add("サブ項目2");
}

// 選択項目を削除(その1)
foreach (ListViewItem item in ListView1.SelectedItems)
{
	ListView1.Items.Remove(item);
}

// 選択項目を削除(その2)
foreach (int intIndex in ListView1.SelectedIndices)
{
	ListView1.Items.RemoveAt(intIndex);
}

// 1番目の項目を選択状態にする
ListView1.Items[0].Selected = true;

// リストをクリア
ListView1.Items.Clear();

// 項目を大量に追加(早い)
//(注意)マシンのスペックによってはかなりの違いが出ます。
private void Button8_Click(object sender, System.EventArgs e)
{
	int intCount;
	int intIconIndex;

	//リストの再描画を一旦停止
	ListView1.BeginUpdate();

	ListView1.Items.Clear();
	for (intCount = 1; intCount <= 5000; intCount++)
	{
		intIconIndex = intCount % 4;
		ListView1.Items.Add("Item" + intCount.ToString(), intIconIndex);
		ListView1.Items[intCount - 1].SubItems.Add("Sub-" + intCount.ToString() + "-2");
		ListView1.Items[intCount - 1].SubItems.Add("Sub-" + intCount.ToString() + "-3");
	}

	//リストの再描画を再開
	ListView1.EndUpdate();
}

// 項目数の取得
MessageBox.Show(ListView1.Items.Count.ToString());

// 1番目のアイテムのチェック状態の取得
if (ListView1.Items[0].Checked == true)
{
	MessageBox.Show("チェック状態");
}
else
{
	MessageBox.Show("未チェック状態");
}

// 1番目のアイテムのチェック状態の設定
ListView1.Items[0].Checked = true;

// リストビューのラベル編集で空白にさせない
// (注意)LabelEdit = True の場合のみこのイベントが発生します
private void ListView1_AfterLabelEdit(object sender, System.Windows.Forms.LabelEditEventArgs e)
{
	if (e.Label == "")
	{
		MessageBox.Show("空文字は設定出来ません!");
		e.CancelEdit = true;
	}
}


--------------------------------------------------------------------------------
VB.NET

'リストビューにアイコンを関連付け
'(注意)イメージリストにはあらかじめアイコンを4つ登録してあります
ListView1.SmallImageList = ImageList1
ListView1.LargeImageList = ImageList2

'リストビューの詳細表示用のヘッダ作成
ListView1.Columns.Add("Item", 100, HorizontalAlignment.Left)
ListView1.Columns.Add("SubItem1", 100, HorizontalAlignment.Left)
ListView1.Columns.Add("SubItem2", 100, HorizontalAlignment.Left)

'表示形式(リスト, 小さいアイコン, 大きいアイコン, 詳細)
ListView1.View = View.List
ListView1.View = View.SmallIcon
ListView1.View = View.LargeIcon
ListView1.View = View.Details

'詳細表示時にヘッダをドラッグ&ドロップで入れ替え可能(ON/OFF)
ListView1.AllowColumnReorder = True
ListView1.AllowColumnReorder = False

'チェックボックスの表示(ON/OFF)
ListView1.CheckBoxes = True
ListView1.CheckBoxes = False

'文字の色(黒, 緑, 黄)
ListView1.ForeColor = Color.Black
ListView1.ForeColor = Color.Green
ListView1.ForeColor = Color.Yellow

'背景色(白, 青, 赤)
ListView1.BackColor = Color.White
ListView1.BackColor = Color.Blue
ListView1.BackColor = Color.Red
'使用可・不可
ListView1.Enabled = True
ListView1.Enabled = False

'表示・非表示
ListView1.Visible = True
ListView1.Visible = False

'選択時の強調表示
//1番目の項目のみ強調表示, 選択時に行全体を強調表示
ListView1.FullRowSelect = False
ListView1.FullRowSelect = True

'詳細表示時の線(ON/OFF)
ListView1.GridLines = True
ListView1.GridLines = False

'クリックすると項目選択, マウスを置くだけで項目選択
ListView1.HoverSelection = False
ListView1.HoverSelection = True

'複数選択(ON/OFF)
ListView1.MultiSelect = True
ListView1.MultiSelect = False

'項目の編集(ON/OFF)
ListView1.LabelEdit = True
ListView1.LabelEdit = False

'項目の追加
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    '項目の追加
    '(注意)2つ目の引数はイメージリストのアイコンインデックスです。
    '   アイコンが不要な場合は2つ目の引数は不要です。
    ListView1.Items.Add("AAAAA", 1)

    'サブ項目の追加
    '(注意)Items()のインデックスは追加した項目のインデックス
    '   今回は一番後ろに追加したので(項目数 - 1)が追加したインデックスになる
    ListView1.Items(ListView1.Items.Count - 1).SubItems.Add("サブ項目1")
    ListView1.Items(ListView1.Items.Count - 1).SubItems.Add("サブ項目2")
End Sub

'項目を先頭に挿入
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    '項目の追加
    '(注意)2つ目の引数はイメージリストのアイコンインデックスです。
    '   アイコンが不要な場合は2つ目の引数は不要です。
    ListView1.Items.Insert(0, "AAAAA", 1)

    'サブ項目の追加
    '(注意)Items()のインデックスは追加した項目のインデックス
    //    今回は一番先頭に挿入したのでゼロになる
    ListView1.Items(0).SubItems.Add("サブ項目1")
    ListView1.Items(0).SubItems.Add("サブ項目2")
End Sub

'選択項目を削除(その1)
For Each lvi In ListView1.SelectedItems
    ListView1.Items.Remove(lvi)
Next

'選択項目を削除(その2)
For Each intIndex In ListView1.SelectedIndices
    ListView1.Items.RemoveAt(intIndex)
Next

'1番目の項目を選択状態にする
ListView1.Items(0).Selected = True

'リストをクリア
ListView1.Items.Clear()

'項目を大量に追加(早い)
//(注意)マシンのスペックによってはかなりの違いが出ます。
Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
    Dim intCount As Integer
    Dim intIconIndex As Integer

    //リストの再描画を一旦停止
    ListView1.BeginUpdate()

    ListView1.Items.Clear()
    For intCount = 1 To 5000
        intIconIndex = intCount Mod 4
        ListView1.Items.Add("Item" + intCount.ToString(), intIconIndex)
        ListView1.Items(intCount - 1).SubItems.Add("Sub-" + intCount.ToString() + "-2")
        ListView1.Items(intCount - 1).SubItems.Add("Sub-" + intCount.ToString() + "-3")
    Next

    //リストの再描画を再開
    ListView1.EndUpdate()
End Sub

'項目数の取得
MessageBox.Show(ListView1.Items.Count.ToString())

'1番目のアイテムのチェック状態の取得
If ListView1.Items(0).Checked == True Then
    MessageBox.Show("チェック状態")
Else
    MessageBox.Show("未チェック状態")
End If

'1番目のアイテムのチェック状態の設定
ListView1.Items(0).Checked = True

'リストビューのラベル編集で空白にさせない
'(注意)LabelEdit = True の場合のみこのイベントが発生します
Private Sub ListView1_AfterLabelEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.LabelEditEventArgs) Handles ListView1.AfterLabelEdit
    If e.Label = "" Then
        MsgBox("空文字は設定出来ません!")
        e.CancelEdit = True
    End If
End Sub

サンプルソースのダウンロード


ソースのダウンロード


TOP.NETWindowsForm → This Page
Valid CSS!