[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);
}

[Tips][ListView] アイテムの表示方法を設定する

現在HIRO’s.NETのコンテンツを見直しています。

せっかくなので、見直したものをブログで紹介していきたいと思います。

今回より数回に分けて Windowsアプリケーションの ListViewコントロールのTipsを紹介します。


ListView コントロールのアイテムの表示方法は5種類あります。

表示方法を設定するには View プロパティを使用し、View 列挙体を指定します。

View列挙体
メンバ名 説明
LargeIcon 各項目は、ラベルが下に付いているフルサイズのアイコンとして表示されます。
Details 各項目は各行に表示され、各項目に関する詳しい情報が各列に配置されます。左端の列には小さいアイコンとラベルが示されます。次の列にはアプリケーションで指定されたサブ項目が示されます。列には、列のキャプションを示すヘッダーが表示されます。ユーザーは実行時に各列のサイズを変更できます。
SmallIcon 各項目は、ラベルが右側に付いている小さいアイコンとして表示されます。
List 各項目は、ラベルが右側に付いている小さいアイコンとして表示されます。項目は、列ヘッダーのない列に配置されます。
Tiles 各項目はフルサイズのアイコンとして表示され、右側にラベルとサブ項目の情報が表示されます。表示するサブ項目の情報は、アプリケーションによって指定されます。この情報は Windows XP および Windows Server 2003 ファミリでのみ表示されます。古いオペレーティング システムではこの値が無視され、LargeIcon ビューには ListView コントロールが表示されます。

下記は、Viewプロパティを使用して、表示方法を設定する例です。

VBの例

''' <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#の例

/// <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;
}