如何:在 Windows 窗体 ListView 控件中启用平铺视图

使用 ListView 控件的磁贴视图功能,可以在图形和文本信息之间提供一种视觉平衡。 磁贴视图中,为项目显示的文本信息与为详细信息视图定义的列信息相同。 磁贴视图与 ListView 控件中的分组或插入标记功能配合使用。

磁贴视图使用 32 x 32 像素的图标和若干行文本,如以下图像中所示。

Tile View in a ListView Control

若要启用磁贴视图,请将 View 属性设置为 Tile。 可以通过设置 TileSize 属性来调整平铺大小,并通过调整 Columns 集合,来调整磁贴中显示的文本行数。

若要以编程方式设置磁贴视图

  1. 使用 ListView 控件的 View 枚举。

    ListView1.View = View.Tile  
    
    listView1.View = View.Tile;  
    

示例

以下完整的代码示例演示了修改磁贴以显示三行文本的磁贴视图。 已经调整了磁贴大小,以防止自动换行。

#using <System.dll>
#using <System.Windows.Forms.dll>
#using <System.Drawing.dll>

using namespace System;
using namespace System::Drawing;
using namespace System::Windows::Forms;

public ref class ListViewTilingExample: public Form
{
private:
   ImageList^ myImageList;

public:
   ListViewTilingExample()
   {
      // Initialize myListView.
      ListView^ myListView = gcnew ListView;
      myListView->Dock = DockStyle::Fill;
      myListView->View = View::Tile;
      
      // Initialize the tile size.
      myListView->TileSize = System::Drawing::Size( 400, 45 );
      
      // Initialize the item icons.
      myImageList = gcnew ImageList;
      System::Drawing::Icon^ myIcon = gcnew System::Drawing::Icon( "book.ico" );
      try
      {
         myImageList->Images->Add( myIcon );
      }
      finally
      {
         if ( myIcon )
                  delete safe_cast<IDisposable^>(myIcon);
      }

      myImageList->ImageSize = System::Drawing::Size( 32, 32 );
      myListView->LargeImageList = myImageList;
      
      // Add column headers so the subitems will appear.
      array<ColumnHeader^>^temp0 = {gcnew ColumnHeader,gcnew ColumnHeader,gcnew ColumnHeader};
      myListView->Columns->AddRange( temp0 );
      
      // Create items and add them to myListView.
      array<String^>^temp1 = {"Programming Windows","Petzold, Charles","1998"};
      ListViewItem^ item0 = gcnew ListViewItem( temp1,0 );
      array<String^>^temp2 = {"Code: The Hidden Language of Computer Hardware and Software","Petzold, Charles","2000"};
      ListViewItem^ item1 = gcnew ListViewItem( temp2,0 );
      array<String^>^temp3 = {"Programming Windows with C#","Petzold, Charles","2001"};
      ListViewItem^ item2 = gcnew ListViewItem( temp3,0 );
      array<String^>^temp4 = {"Coding Techniques for Microsoft Visual Basic .NET","Connell, John","2001"};
      ListViewItem^ item3 = gcnew ListViewItem( temp4,0 );
      array<String^>^temp5 = {"C# for Java Developers","Jones, Allen & Freeman, Adam","2002"};
      ListViewItem^ item4 = gcnew ListViewItem( temp5,0 );
      array<String^>^temp6 = {"Microsoft .NET XML Web Services Step by Step","Jones, Allen & Freeman, Adam","2002"};
      ListViewItem^ item5 = gcnew ListViewItem( temp6,0 );
      array<ListViewItem^>^temp7 = {item0,item1,item2,item3,item4,item5};
      myListView->Items->AddRange( temp7 );
      
      // Initialize the form.
      this->Controls->Add( myListView );
      this->Size = System::Drawing::Size( 430, 330 );
      this->Text = "ListView Tiling Example";
   }

protected:

   // Clean up any resources being used.
   ~ListViewTilingExample()
   {
      if ( myImageList != nullptr )
      {
         delete myImageList;
      }
   }
};

[STAThread]
int main()
{
   Application::EnableVisualStyles();
   Application::Run( gcnew ListViewTilingExample );
}
using System;
using System.Drawing;
using System.Windows.Forms;

public class ListViewTilingExample : Form
{
    private ImageList myImageList;

    public ListViewTilingExample()
    {
        // Initialize myListView.
        ListView myListView = new ListView();
        myListView.Dock = DockStyle.Fill;
        myListView.View = View.Tile;

        // Initialize the tile size.
        myListView.TileSize = new Size(400, 45);

        // Initialize the item icons.
        myImageList = new ImageList();
        using (Icon myIcon = new Icon("book.ico"))
        {
            myImageList.Images.Add(myIcon);
        }
        myImageList.ImageSize = new Size(32, 32);
        myListView.LargeImageList = myImageList;

        // Add column headers so the subitems will appear.
        myListView.Columns.AddRange(new ColumnHeader[]
            {new ColumnHeader(), new ColumnHeader(), new ColumnHeader()});

        // Create items and add them to myListView.
        ListViewItem item0 = new ListViewItem( new string[]
            {"Programming Windows",
            "Petzold, Charles",
            "1998"}, 0 );
        ListViewItem item1 = new ListViewItem( new string[]
            {"Code: The Hidden Language of Computer Hardware and Software",
            "Petzold, Charles",
            "2000"}, 0 );
        ListViewItem item2 = new ListViewItem( new string[]
            {"Programming Windows with C#",
            "Petzold, Charles",
            "2001"}, 0 );
        ListViewItem item3 = new ListViewItem( new string[]
            {"Coding Techniques for Microsoft Visual Basic .NET",
            "Connell, John",
            "2001"}, 0 );
        ListViewItem item4 = new ListViewItem( new string[]
            {"C# for Java Developers",
            "Jones, Allen & Freeman, Adam",
            "2002"}, 0 );
        ListViewItem item5 = new ListViewItem( new string[]
            {"Microsoft .NET XML Web Services Step by Step",
            "Jones, Allen & Freeman, Adam",
            "2002"}, 0 );
        myListView.Items.AddRange(
            new ListViewItem[] {item0, item1, item2, item3, item4, item5});

        // Initialize the form.
        this.Controls.Add(myListView);
        this.Size = new System.Drawing.Size(430, 330);
        this.Text = "ListView Tiling Example";
    }

    // Clean up any resources being used.
    protected override void Dispose(bool disposing)
    {
        if (disposing)
        {
            myImageList.Dispose();
        }
        base.Dispose(disposing);
    }

    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.Run(new ListViewTilingExample());
    }
}
Imports System.Drawing
Imports System.Windows.Forms

Public Class ListViewTilingExample
    Inherits Form
    
    Private myImageList As ImageList

    Public Sub New()
        ' Initialize myListView.
        Dim myListView As New ListView()
        myListView.Dock = DockStyle.Fill
        myListView.View = View.Tile
        
        ' Initialize the tile size.
        myListView.TileSize = new Size(400, 45)
        
        ' Initialize the item icons. 
        myImageList = New ImageList()
        Dim myIcon as Icon = new Icon("book.ico")
        Try
            myImageList.Images.Add(myIcon)
        Finally
            myIcon.Dispose()
        End Try
        myIcon.Dispose()
        myImageList.ImageSize = New Size(32, 32)
        myListView.LargeImageList = myImageList
        
        ' Add column headers so the subitems will appear.
        myListView.Columns.AddRange(New ColumnHeader() _
            {New ColumnHeader(), New ColumnHeader(), New ColumnHeader()})
        
        ' Create items and add them to myListView.
        Dim item0 As New ListViewItem( New String() _
            {"Programming Windows", _
            "Petzold, Charles", _
            "1998"}, 0 )
        Dim item1 As New ListViewItem( New String() _
            {"Code: The Hidden Language of Computer Hardware and Software", _
            "Petzold, Charles", _
            "2000"}, 0 )
        Dim item2 As New ListViewItem( New String() _
            {"Programming Windows with C#", _
            "Petzold, Charles", _
            "2001"}, 0 )
        Dim item3 As New ListViewItem( New String() _
            {"Coding Techniques for Microsoft Visual Basic .NET", _
            "Connell, John", _
            "2001"}, 0 )
        Dim item4 As New ListViewItem( New String() _
            {"C# for Java Developers", _
            "Jones, Allen / Freeman, Adam", _
            "2002"}, 0 )
        Dim item5 As New ListViewItem( New String() _
            {"Microsoft .NET XML Web Services Step by Step", _
            "Jones, Allen / Freeman, Adam", _
            "2002"}, 0 )
        myListView.Items.AddRange( _
            New ListViewItem() {item0, item1, item2, item3, item4, item5})
        
        ' Initialize the form.
        Me.Controls.Add(myListView)
        Me.Size = new System.Drawing.Size(430, 330)
        Me.Text = "ListView Tiling Example"
    End Sub
    
    ' Clean up any resources being used.        
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If (disposing) Then
            myImageList.Dispose()
        End If

        MyBase.Dispose(disposing)
    End Sub

    <STAThread()> _
    Shared Sub Main()
        Application.EnableVisualStyles()
        Application.Run(New ListViewTilingExample())
    End Sub

End Class

编译代码

此示例需要:

  • 对 System 和 System.Windows.Forms 程序集的引用。

  • 在执行文件相同的目录中的一个名为 book.ico 的图标文件。

另请参阅