[Tips][ListView] 項目を削除する

ListViewから項目を削除するには、Itemsプロパティが持つ削除系のメソッドを使用します(下記)。

メソッド 説明
Removeメソッド リストビューの項目を指定して削除する
RemoveAtメソッド リストビューに表示されている項目のインデックス番号を指定して削除する
Clearメソッド リストビューに表示されている項目をすべて削除する

下記は、上記メソッドを使用して項目を削除する例です。

[C#を削除]ボタンをクリックした場合は、ListViewの1番目の項目を取得し、そのTextが”C#”の場合に削除を行います。

[1番目を削除]ボタンをクリックしたときは、ListViewの1番最初の項目(インデックスが0)を削除します。

[全削除]ボタンをクリックしたときは、ListViewに表示されているすべての項目を削除します。

VBの例

''' <summary>
''' フォームロード時の処理
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'ListViewに項目を追加する
    AddItems()
End Sub

''' <summary>
''' [項目の追加]ボタンクリック時の処理
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub btnAddItems_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAddItems.Click
    ListView1.Items.Clear()

    'ListViewに項目を追加する
    AddItems()
End Sub

''' <summary>
''' [C#の削除]ボタンクリック時の処理
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub btnRemoveCS_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRemoveCS.Click
    For Each itemx As ListViewItem In ListView1.Items
        '項目がC#の場合に削除する
        If itemx.Text = "C#" Then
            ListView1.Items.Remove(itemx)
        End If
    Next
End Sub

''' <summary>
''' [1番目の項目を削除]ボタンクリック時の処理
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub btnRemove1st_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRemove1st.Click
    ListView1.Items.RemoveAt(0)
End Sub

''' <summary>
''' [全削除]ボタンクリック時の処理
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub btnAllClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAllClear.Click
    ListView1.Items.Clear()
End Sub

''' <summary>
''' ListViewに項目を追加する
''' </summary>
''' <remarks></remarks>
Private Sub AddItems()
    Dim items(,) As String = {
        {"VB", "ぶいびー"},
        {"C#", "しーしゃーぷ"},
        {"VC++", "びじゅあるしーぷらすぷらす"},
        {"F#", "えふしゃーぷ"},
        {"PowerShell", "ぱわーしぇる"}}


    For I As Integer = 0 To (items.Length \ items.Rank) - 1
        Dim itemx As New ListViewItem

        itemx.Text = items(I, 0)
        itemx.SubItems.Add(items(I, 1))
        ListView1.Items.Add(itemx)
    Next
End Sub

C#の例

/// <summary>
/// フォームロード時の処理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form4_Load(object sender, EventArgs e)
{
    //  ListViewに項目を追加する
    AddItems();
}

/// <summary>
/// [項目の追加]ボタンクリック時の処理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnAddItems_Click(object sender, EventArgs e)
{
    listView1.Items.Clear();

    // ListViewに項目を追加する
    AddItems();
}

/// <summary>
/// [C#の削除]ボタンクリック時の処理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnRemoveCS_Click(object sender, EventArgs e)
{
    foreach (ListViewItem itemx in listView1.Items)
    {
        // 項目がC#の場合に削除する
        if (itemx.Text == "C#")
            listView1.Items.Remove(itemx);
    }
}

/// <summary>
/// [1番目の項目を削除]ボタンクリック時の処理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnRemove1st_Click(object sender, EventArgs e)
{
    listView1.Items.RemoveAt(0);
}

/// <summary>
/// [全削除]ボタンクリック時の処理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnAllClear_Click(object sender, EventArgs e)
{
    listView1.Items.Clear();
}

/// <summary>
/// ListViewに項目を追加する
/// </summary>
private void AddItems()
{
    string[,] items = {
                      {"VB", "ぶいびー"},
                      {"C#", "しーしゃーぷ"},
                      {"VC++", "びじゅあるしーぷらすぷらす"},
                      {"F#", "えふしゃーぷ"},
                      {"PowerShell", "ぱわーしぇる"}};

    for ( int i = 0; i < items.Length / items.Rank ; i++ )
    {
        ListViewItem itemx = new ListViewItem();

        itemx.Text = items[i, 0];
        itemx.SubItems.Add(items[i, 1]);
        listView1.Items.Add(itemx);
    }
}

[Tips][ListView] 項目を追加する

ListView コントロールに項目を追加するには、ListViewItemクラスを使用します。

項目のテキストを設定するには Textプロパティを使用します。

ただし、Viewプロパティの値(ListViewの表示方法)によっては1つの項目に複数のテキストを表示させることができるため、Textプロパティだけでは設定することが出来ません。

そこで、2つ目移行の項目の設定は SubItems プロパティを使用します。

“SubItems”は文字通り、ある項目に対するサブ項目を表すものであり、ViewプロパティがDetailsに設定されている場合は2列目,3列目…のテキストを設定することができます。

下記はListViewItemクラスで主に使用されるプロパティとメソッドです。

プロパティ/メソッド 説明
Text 項目のテキスト
ImageIndex 項目に表示するアイコンを設定する。

ListViewにImageListが設定されている場合に有効。

SubItems.Add サブ項目を追加する。

下記は、ListViewに項目を追加する例です。

ListViewに1つの項目(サブ項目を含む)を追加しています。Viewプロパティ(表示方法)の値によってサブ項目が表示されるかどうかが変わることに注意してください。

VBの例

Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    '詳細表示にする
    ListView1.View = View.Details

    '列を追加する(列に表示する文字列、幅、列に表示する文字の配置位置)
    ListView1.Columns.Add("名称", 50, HorizontalAlignment.Left)
    ListView1.Columns.Add("読み", 80, HorizontalAlignment.Left)
    ListView1.Columns.Add("初リリース", 120, HorizontalAlignment.Left)

    '追加する項目の設定
    Dim itemx As New ListViewItem
    itemx.Text = "VB"                '1列目に表示するテキスト
    itemx.ImageIndex = 0             'イメージのインデックス番号
    itemx.SubItems.Add("ぶいびー")   '2列目に表示するテキスト
    itemx.SubItems.Add("1991年")     '3列目に表示するテキスト

    'リストビューに項目を追加
    ListView1.Items.Add(itemx)
End Sub

''' <summary>
''' LargeIcon表示
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub rdoLargeIcon_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rdoLargeIcon.CheckedChanged
    ListView1.View = View.LargeIcon
End Sub

''' <summary>
''' Details表示
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub rdoDetails_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rdoDetails.CheckedChanged
    ListView1.View = View.Details
End Sub

''' <summary>
''' SmallIcon表示
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub rdoSmallIcon_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rdoSmallIcon.CheckedChanged
    ListView1.View = View.SmallIcon
End Sub

''' <summary>
''' List表示
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub rdoList_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rdoList.CheckedChanged
    ListView1.View = View.List
End Sub

''' <summary>
''' Tile表示
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub rdoTile_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rdoTile.CheckedChanged
    ListView1.View = View.Tile
End Sub

C#の例

private void Form3_Load(object sender, EventArgs e)
{
    // 詳細表示にする
    listView1.View = View.Details;

    // 列を追加する(列に表示する文字列、幅、列に表示する文字の配置位置)
    listView1.Columns.Add("名称", 50, HorizontalAlignment.Left);
    listView1.Columns.Add("読み", 80, HorizontalAlignment.Left);
    listView1.Columns.Add("初リリース", 120, HorizontalAlignment.Left);

    // 追加する項目の設定
    ListViewItem itemx = new ListViewItem();
    itemx.Text = "C#";                    // 1列目に表示するテキスト
    itemx.ImageIndex = 0;                 // イメージのインデックス番号
    itemx.SubItems.Add("しーしゃーぷ");   // 2列目に表示するテキスト
    itemx.SubItems.Add("2002年");         // 3列目に表示するテキスト

    // リストビューに項目を追加
    listView1.Items.Add(itemx);
}

/// <summary>
/// LargeIcon表示
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void rdoLargeIcon_CheckedChanged(object sender, EventArgs e)
{
    listView1.View = View.LargeIcon;
}

/// <summary>
/// Details表示
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void rdoDetails_CheckedChanged(object sender, EventArgs e)
{
    listView1.View = View.Details;
}

/// <summary>
/// SmallIcon表示
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void rdoSmallIcon_CheckedChanged(object sender, EventArgs e)
{
    listView1.View = View.SmallIcon;
}

/// <summary>
/// List表示
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void rdoList_CheckedChanged(object sender, EventArgs e)
{
    listView1.View = View.List;

}

/// <summary>
/// Tile表示
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void rdoTile_CheckedChanged(object sender, EventArgs e)
{
    listView1.View = View.Tile;
}

[Tips][ListView] 詳細表示時の列ヘッダーを作成する

ListView コントロールを詳細表示設定にしたときは、列を追加して表示させることが可能です。

列を追加するには ColumnsプロパティAddメソッドを使用します。

Addメソッドには多くのオーバーロードがありますが、もっとも単純な書式は

Add(列ヘッダーに表示する文字列)

です。ただし、この場合は列の幅やヘッダーに表示する文字列の配置位置が自動で設定されてしまいます。

下記の書式を使用すれば、表示する文字列/列の幅/表示する文字列の配置位置を設定することができます。

Add(列ヘッダーに表示する文字列, 列の幅, 表示する文字列の配置位置)

以上を踏まえて、ListViewに列を追加する例を下記に示します。

VBの例

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    '詳細表示にする
    ListView1.View = View.Details

    '列を追加する(列に表示する文字列、幅、列に表示する文字の配置位置)
    ListView1.Columns.Add("名称", 100, HorizontalAlignment.Left)
    ListView1.Columns.Add("読み", 150, HorizontalAlignment.Left)
End Sub

C#の例

private void Form2_Load(object sender, EventArgs e)
{
    // 詳細表示にする
    listView1.View = View.Details;

    // 列を追加する(列に表示する文字列、幅、列に表示する文字の配置位置)
    listView1.Columns.Add("名称", 100, HorizontalAlignment.Left);
    listView1.Columns.Add("読み", 150, HorizontalAlignment.Left);
}