添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
public ref class ListView : System::Windows::Forms::Control
public class ListView : System.Windows.Forms.Control
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.AutoDispatch)]
[System.Runtime.InteropServices.ComVisible(true)]
[System.Windows.Forms.Docking(System.Windows.Forms.DockingBehavior.Ask)]
public class ListView : System.Windows.Forms.Control
[System.Windows.Forms.Docking(System.Windows.Forms.DockingBehavior.Ask)]
public class ListView : System.Windows.Forms.Control
type ListView = class
    inherit Control
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.AutoDispatch)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Windows.Forms.Docking(System.Windows.Forms.DockingBehavior.Ask)>]
type ListView = class
    inherit Control
[<System.Windows.Forms.Docking(System.Windows.Forms.DockingBehavior.Ask)>]
type ListView = class
    inherit Control
Public Class ListView
Inherits Control
Object
ListView

下面的代码示例创建一个控件,其中为每个项指定了三 ListViewItem ListView 对象和三个 ListViewItem.ListViewSubItem 对象。 该示例还创建 ColumnHeader 对象以在详细信息视图中显示子项。 此外,在代码示例中创建两 ImageList 个对象来为 ListViewItem 对象提供图像。 这些 ImageList 对象将添加到 LargeImageList SmallImageList 属性中。 该示例在创建 ListView 控件时使用以下属性:

  • LabelEdit
  • AllowColumnReorder
  • CheckBoxes
  • FullRowSelect
  • GridLines
  • Sorting
  • 此示例要求已将代码添加到 , Form 并从窗体上的构造函数或另一个方法调用在示例中创建的方法。 该示例还要求名为 MySmallImage1 MySmallImage2 MyLargeImage1 MyLargeImage2 的映像位于驱动器 C 的根目录中。

    private: void CreateMyListView() // Create a new ListView control. ListView^ listView1 = gcnew ListView; listView1->Bounds = Rectangle(Point(10,10),System::Drawing::Size( 300, 200 )); // Set the view to show details. listView1->View = View::Details; // Allow the user to edit item text. listView1->LabelEdit = true; // Allow the user to rearrange columns. listView1->AllowColumnReorder = true; // Display check boxes. listView1->CheckBoxes = true; // Select the item and subitems when selection is made. listView1->FullRowSelect = true; // Display grid lines. listView1->GridLines = true; // Sort the items in the list in ascending order. listView1->Sorting = SortOrder::Ascending; // Create three items and three sets of subitems for each item. ListViewItem^ item1 = gcnew ListViewItem( "item1",0 ); // Place a check mark next to the item. item1->Checked = true; item1->SubItems->Add( "1" ); item1->SubItems->Add( "2" ); item1->SubItems->Add( "3" ); ListViewItem^ item2 = gcnew ListViewItem( "item2",1 ); item2->SubItems->Add( "4" ); item2->SubItems->Add( "5" ); item2->SubItems->Add( "6" ); ListViewItem^ item3 = gcnew ListViewItem( "item3",0 ); // Place a check mark next to the item. item3->Checked = true; item3->SubItems->Add( "7" ); item3->SubItems->Add( "8" ); item3->SubItems->Add( "9" ); // Create columns for the items and subitems. // Width of -2 indicates auto-size. listView1->Columns->Add( "Item Column", -2, HorizontalAlignment::Left ); listView1->Columns->Add( "Column 2", -2, HorizontalAlignment::Left ); listView1->Columns->Add( "Column 3", -2, HorizontalAlignment::Left ); listView1->Columns->Add( "Column 4", -2, HorizontalAlignment::Center ); //Add the items to the ListView. array<ListViewItem^>^temp1 = {item1,item2,item3}; listView1->Items->AddRange( temp1 ); // Create two ImageList objects. ImageList^ imageListSmall = gcnew ImageList; ImageList^ imageListLarge = gcnew ImageList; // Initialize the ImageList objects with bitmaps. imageListSmall->Images->Add( Bitmap::FromFile( "C:\\MySmallImage1.bmp" ) ); imageListSmall->Images->Add( Bitmap::FromFile( "C:\\MySmallImage2.bmp" ) ); imageListLarge->Images->Add( Bitmap::FromFile( "C:\\MyLargeImage1.bmp" ) ); imageListLarge->Images->Add( Bitmap::FromFile( "C:\\MyLargeImage2.bmp" ) ); //Assign the ImageList objects to the ListView. listView1->LargeImageList = imageListLarge; listView1->SmallImageList = imageListSmall; // Add the ListView to the control collection. this->Controls->Add( listView1 ); private void CreateMyListView() // Create a new ListView control. ListView listView1 = new ListView(); listView1.Bounds = new Rectangle(new Point(10,10), new Size(300,200)); // Set the view to show details. listView1.View = View.Details; // Allow the user to edit item text. listView1.LabelEdit = true; // Allow the user to rearrange columns. listView1.AllowColumnReorder = true; // Display check boxes. listView1.CheckBoxes = true; // Select the item and subitems when selection is made. listView1.FullRowSelect = true; // Display grid lines. listView1.GridLines = true; // Sort the items in the list in ascending order. listView1.Sorting = SortOrder.Ascending; // Create three items and three sets of subitems for each item. ListViewItem item1 = new ListViewItem("item1",0); // Place a check mark next to the item. item1.Checked = true; item1.SubItems.Add("1"); item1.SubItems.Add("2"); item1.SubItems.Add("3"); ListViewItem item2 = new ListViewItem("item2",1); item2.SubItems.Add("4"); item2.SubItems.Add("5"); item2.SubItems.Add("6"); ListViewItem item3 = new ListViewItem("item3",0); // Place a check mark next to the item. item3.Checked = true; item3.SubItems.Add("7"); item3.SubItems.Add("8"); item3.SubItems.Add("9"); // Create columns for the items and subitems. // Width of -2 indicates auto-size. listView1.Columns.Add("Item Column", -2, HorizontalAlignment.Left); listView1.Columns.Add("Column 2", -2, HorizontalAlignment.Left); listView1.Columns.Add("Column 3", -2, HorizontalAlignment.Left); listView1.Columns.Add("Column 4", -2, HorizontalAlignment.Center); //Add the items to the ListView. listView1.Items.AddRange(new ListViewItem[]{item1,item2,item3}); // Create two ImageList objects. ImageList imageListSmall = new ImageList(); ImageList imageListLarge = new ImageList(); // Initialize the ImageList objects with bitmaps. imageListSmall.Images.Add(Bitmap.FromFile("C:\\MySmallImage1.bmp")); imageListSmall.Images.Add(Bitmap.FromFile("C:\\MySmallImage2.bmp")); imageListLarge.Images.Add(Bitmap.FromFile("C:\\MyLargeImage1.bmp")); imageListLarge.Images.Add(Bitmap.FromFile("C:\\MyLargeImage2.bmp")); //Assign the ImageList objects to the ListView. listView1.LargeImageList = imageListLarge; listView1.SmallImageList = imageListSmall; // Add the ListView to the control collection. this.Controls.Add(listView1); Private Sub CreateMyListView() ' Create a new ListView control. Dim listView1 As New ListView() listView1.Bounds = New Rectangle(New Point(10, 10), New Size(300, 200)) ' Set the view to show details. listView1.View = View.Details ' Allow the user to edit item text. listView1.LabelEdit = True ' Allow the user to rearrange columns. listView1.AllowColumnReorder = True ' Display check boxes. listView1.CheckBoxes = True ' Select the item and subitems when selection is made. listView1.FullRowSelect = True ' Display grid lines. listView1.GridLines = True ' Sort the items in the list in ascending order. listView1.Sorting = SortOrder.Ascending ' Create three items and three sets of subitems for each item. Dim item1 As New ListViewItem("item1", 0) ' Place a check mark next to the item. item1.Checked = True item1.SubItems.Add("1") item1.SubItems.Add("2") item1.SubItems.Add("3") Dim item2 As New ListViewItem("item2", 1) item2.SubItems.Add("4") item2.SubItems.Add("5") item2.SubItems.Add("6") Dim item3 As New ListViewItem("item3", 0) ' Place a check mark next to the item. item3.Checked = True item3.SubItems.Add("7") item3.SubItems.Add("8") item3.SubItems.Add("9") ' Create columns for the items and subitems. ' Width of -2 indicates auto-size. listView1.Columns.Add("Item Column", -2, HorizontalAlignment.Left) listView1.Columns.Add("Column 2", -2, HorizontalAlignment.Left) listView1.Columns.Add("Column 3", -2, HorizontalAlignment.Left) listView1.Columns.Add("Column 4", -2, HorizontalAlignment.Center) 'Add the items to the ListView. listView1.Items.AddRange(New ListViewItem() {item1, item2, item3}) ' Create two ImageList objects. Dim imageListSmall As New ImageList() Dim imageListLarge As New ImageList() ' Initialize the ImageList objects with bitmaps. imageListSmall.Images.Add(Bitmap.FromFile("C:\MySmallImage1.bmp")) imageListSmall.Images.Add(Bitmap.FromFile("C:\MySmallImage2.bmp")) imageListLarge.Images.Add(Bitmap.FromFile("C:\MyLargeImage1.bmp")) imageListLarge.Images.Add(Bitmap.FromFile("C:\MyLargeImage2.bmp")) 'Assign the ImageList objects to the ListView. listView1.LargeImageList = imageListLarge listView1.SmallImageList = imageListSmall ' Add the ListView to the control collection. Me.Controls.Add(listView1) End Sub

    ListView 控件允许显示包含项文本的项列表以及用于标识项类型的图标(可选)。 例如,Windows 资源管理器文件列表的外观与 ListView 控件类似。 它显示树中当前选定的文件和文件夹的列表。 每个文件和文件夹都显示与其关联的图标,以帮助标识文件或文件夹的类型。 类 ListViewItem 表示 控件中的项 ListView 。 列表中显示的项可以以五种不同视图之一显示。 项目可以显示为大图标、小图标或垂直列表中的小图标。 项还可以包含子项,其中包含与父项相关的信息。 通过详细信息视图,可以在网格中显示项及其子项,其中列标题标识子项中显示的信息。 磁贴视图的可用性有限,如下所述,使你可以将项及其子项显示为包含文本信息旁边的大图标的磁贴。 ListView 支持单选或多选。 多选功能允许用户以类似于 ListBox 控件的方式从项列表中进行选择。 此外,用户可以激活所选项来执行任务。 例如,可以使用 控件 ListView 显示应用程序随后可以打开和利用的文件列表。 用户可以选择要打开的文件,然后双击它们以激活项目并在应用程序中打开文件。 ListView 还可以使用 CheckBoxes 属性显示检查框,以允许用户检查要对其执行操作的项。 可以通过多种方式使用该 ListView 控件。 控件可用于显示应用程序、数据库或文本文件中的信息。 ListView 还可用于从用户获取信息,例如选择要处理的一组文件。

    ListView 提供了大量属性,这些属性在外观和行为方面提供了灵活性。 属性 View 允许更改项的显示方式。 使用 LargeImageList SmallImageList StateImageList 属性可以指定 ImageList 对象,这些对象包含为项显示的图像,对于 , StateImageList 检查当 属性设置为 true CheckBoxes 显示的框。 若要确定要检查的项,可以使用 CheckedItems 属性访问 ListView.CheckedListViewItemCollection 集合。 属性 Columns 允许访问 ListView.ColumnHeaderCollection ,后者存储控件的 属性设置为 Details View 显示的列标题。 通过 Items 属性从 ListView 中添加和删除项。 属性 Items 允许你访问 ListView.ListViewItemCollection 控件的 ,该控件提供用于操作控件中的项的方法。 如果要允许用户编辑项的文本,可以使用 LabelEdit 属性。 当控件包含大量项时,用户通常更容易在排序列表中查看它们。 可以使用 Sorting 属性按字母顺序对项进行排序。 还可以完全自定义控件的外观 ListView 。 为此,请将 OwnerDraw 属性设置为 true 并处理以下一个或多个事件: DrawItem DrawSubItem DrawColumnHeader

    当控件的 ListView 属性设置为 Details 时, View 将使用 控件的许多属性。 属性 AllowColumnReorder 允许控件的 ListView 用户在运行时重新配置列的顺序。 属性 FullRowSelect 允许选择项及其子项,而不仅仅是该项。 若要在详细信息视图中显示网格线以标识 中的 ListView 项和子项的边界,可以使用 GridLines 属性。 属性 HeaderStyle 允许您指定要显示的列标题的类型。

    ListView 控件可以在虚拟模式下运行,其中 ListViewItem 对象是动态生成的,而不是存储在集合中 Items 。 这对于处理内容经常更改的非常大的列表或列表很有用。 若要启用虚拟模式,请将 VirtualMode 属性设置为 true 并处理 RetrieveVirtualItem CacheVirtualItems SearchForVirtualItem 事件。

    除了可用于 ListView 控件的许多属性外,还有一些方法和事件可供应用程序用来为 ListView 提供其他功能。 BeginUpdate 通过 和 EndUpdate 方法,可以在向 中添加多个项 ListView 时提高性能,方法是防止控件在每次添加项时重新绘制。 ListView 如果控件显示项和子项,你可能希望在用户右键单击子项时提供功能。 若要确定要单击其子项的项,可以使用 GetItemAt 方法。 在用户编辑项目后对项目执行验证时,可能需要向用户显示要更改的特定项。 EnsureVisible 可以调用 方法,以确保特定项位于控件的可见区域中。

    如果 属性 LabelEdit 设置为 true ,则可以执行一些任务,例如通过为 BeforeLabelEdit AfterLabelEdit 事件创建事件处理程序来验证文本更改之前和之后正在编辑的文本。 若要执行打开文件或显示对话框等任务以编辑 中显示的 ListView 项,可以为 事件创建事件处理程序 ItemActivate 。 如果允许用户在单击列标题时对 中的 ListView 项进行排序,则可以为 ColumnClick 事件创建事件处理程序来执行排序。 当 属性 CheckBoxes 设置为 true 时,可以通过处理 ItemCheck 事件来确定项的检查状态何时发生更改。

    还可以使用 BackgroundImage 属性设置 的背景 ListView 图像。 应用程序必须在其 Main 方法上具有 STAThreadAttribute ,才能正确显示控件的背景图像 ListView 。 此外,如果具有背景图像的 ListView 控件托管在 Internet Explorer 中,请在应用程序清单文件中将 comctl32.dll 版本 6.0 指定为依赖程序集,以确保背景图像显示属性。

    Windows XP 和 Windows Server 2003 提供三项功能,这些功能可在应用程序调用 Application.EnableVisualStyles 方法时增强 ListView 控件:磁贴视图、分组和插入标记。

    通过磁贴视图,可以通过在大图标旁边显示项和子项文本来平衡图形和文本信息。 将 View 属性设置为 View.Tile 以启用此行为。

    分组功能使你可以直观地将项分组到相关类别中。 如果要启用此功能, Groups ListView 请使用 属性将对象添加到 ListViewGroup 控件。 若要暂时禁用该功能,请将 ShowGroups 属性设置为 false

    借助插入标记功能,可以通过视觉反馈提供拖放项重新定位,以指示放置位置。 ListViewInsertionMark 使用通过 InsertionMark 属性检索到的对象来显示插入标记。

    这些功能仅在 Windows XP 和 Windows Server 2003 下可用。 在较早的操作系统中,与这些功能相关的代码不起作用,磁贴视图显示为大图标视图,并且不显示插入标记和组。 在某些情况下,你可能希望包含用于确定这些功能是否可用的代码,并在这些功能不可用时提供备用功能。 这些功能由提供操作系统主题功能的同一库提供。 若要检查此库的可用性,请调用 FeatureSupport.IsPresent(Object) 方法重载并传入 OSFeature.Themes 值。

    下表显示了一些 ListView 成员及其有效视图。

    ListView 成员