• C# 第六章『交互式图形界面』◆第2节:控件(2)ListView


            一、ListView 类

    ListView 类 

            1、定义

    • 命名空间:System.Windows.Forms
    • 程序集:System.Windows.Forms.dll

            表示 Windows 列表视图控件,该控件显示可用四种不同视图之一显示的项集合。

    • 继承:Object→MarshalByRefObject→Component→Control→ListView
    • 属性:ClassInterfaceAttribute,ComVisibleAttribute,DockingAttribute

            2、注释:

            ListView控件允许你显示包含项文本的项列表,以及(可选)用于标识项类型的图标。

            ListViewItem 类表示控件中的 ListView 项。 列表中显示的项可以显示在五个不同的视图中之一。 项目可以显示为大图标、小图标或垂直列表中的小图标。 项目还可以包含与父项相关的信息的子项。 详细信息视图允许在网格中显示项及其子项,其中包含用于标识子项中显示的信息的列标题。

            ListView 支持单选或多选。 使用多重选择功能,用户可以从类似于控件的项 ListBox 列表中选择。 此外,用户可以激活所选项来执行任务。

            ListView还可以使用 CheckBoxes 该属性显示复选框,以允许用户检查他们想要在其中执行操作的项目。 可以通过多种方式使用控件 ListView 。 该控件可用于显示来自应用程序、数据库或文本文件的信息。 ListView还可以用于从用户获取信息。

            ListView 成员及其有效视图:

    ListView 成员视图
    Alignment 属性SmallIcon 或 LargeIcon
    AutoArrange 属性SmallIcon 或 LargeIcon
    AutoResizeColumn 方法Details
    Columns 属性Details 或 Tile
    DrawSubItem 事件Details
    FindItemWithText 方法Details、List 或 Tile
    FindNearestItem 方法SmallIcon 或 LargeIcon
    GetItemAt 方法Details 或 Tile
    Groups 属性除 List 外的所有视图
    HeaderStyle 属性Details
    InsertionMark 属性LargeIcon、SmallIcon 或 Tile

            3、ListView 类的构造函数

    ListView() 初始化 ListView 类的新实例。

            4、ListView 类的属性

    AccessibilityObject 获取分配给该控件的 AccessibleObject。(继承自 Control)
    AccessibleDefaultActionDescription 获取或设置控件的默认操作说明以供具有辅助功能的客户端应用程序使用。(继承自 Control)
    AccessibleDescription 获取或设置辅助功能客户端应用程序使用的控件说明。(继承自 Control)
    AccessibleName 获取或设置辅助功能客户端应用程序所使用的控件名称。(继承自 Control)
    AccessibleRole 获取或设置控件的辅助性角色。(继承自 Control)
    Activation 获取或设置用户激活某个项必须要执行的操作的类型。
    Alignment 获取或设置控件中项的对齐方式。
    AllowColumnReorder 获取或设置一个值,该值指示用户是否可拖动列标题来对控件中的列重新排序。
    AllowDrop 获取或设置一个值,该值指示控件是否可以接受用户拖放到它上面的数据。(继承自 Control)
    Anchor 获取或设置控件绑定到的容器的边缘并确定控件如何随其父级一起调整大小。(继承自 Control)
    AutoArrange 获取或设置图标是否自动进行排列。
    AutoScrollOffset 获取或设置一个值,该值指示在 ScrollControlIntoView(Control) 中将控件滚动到何处。(继承自 Control)
    AutoSize 此属性与此类无关。(继承自 Control)
    BackColor 获取或设置背景色。
    BackgroundImage 获取或设置在控件中显示的背景图像。(继承自 Control)
    BackgroundImageLayout 获取或设置 ImageLayout 值。
    BackgroundImageTiled 获取或设置一个值,该值指示是否应平铺 ListView 的背景图像。
    BindingContext 获取或设置控件的 BindingContext。(继承自 Control)
    Bottom 获取控件上边缘与其容器工作区的上边缘之间的距离(以像素为单位)。(继承自 Control)
    Bounds 获取或设置控件(包括其非工作区元素)相对于其父控件的大小和位置(以像素为单位)。(继承自 Control)
    CanFocus 获取一个值,该值指示控件是否可以接收焦点。(继承自 Control)
    CanSelect 获取一个值,该值指示是否可以选中控件。(继承自 Control)
    CausesValidation 获取或设置一个值,该值指示控件是否会引起在任何需要在接收焦点时执行验证的控件上执行验证。(继承自 Control)
    CheckedIndices 获取控件中当前选中项的索引。
    ClientRectangle 获取表示控件的工作区的矩形。(继承自 Control)
    Columns 获取控件中显示的所有列标题的集合
    Container 获取包含 IContainer 的 Component。(继承自 Component)
    ContextMenu 获取或设置与控件关联的快捷菜单。(继承自 Control)
    ContextMenuStrip 获取或设置与此控件关联的 ContextMenuStrip。(继承自 Control)
    Controls 获取包含在控件内的控件的集合。(继承自 Control)
    Created 获取一个值,该值指示控件是否已经创建。(继承自 Control)
    CreateParams 此属性与此类无关。
    Cursor 获取或设置当鼠标指针位于控件上时显示的光标。(继承自 Control)
    DataBindings 为该控件获取数据绑定。(继承自 Control)
    DefaultCursor 获取或设置控件的默认光标。(继承自 Control)
    DefaultImeMode 获取控件支持的默认输入法编辑器 (IME) 模式。(继承自 Control)
    DefaultMargin 获取控件之间默认指定的间距(以像素为单位)。(继承自 Control)
    DefaultMaximumSize 获取以像素为单位的长度和高度,此长度和高度被指定为控件的默认最大大小。(继承自 Control)
    DefaultMinimumSize 获取以像素为单位的长度和高度,此长度和高度被指定为控件的默认最小大小。(继承自 Control)
    DefaultPadding 获取控件内容的内部间距(以像素为单位)。(继承自 Control)
    DefaultSize 获取控件的默认大小。
    DesignMode 获取一个值,用以指示 Component 当前是否处于设计模式。(继承自 Component)
    DeviceDpi 获取显示当前控件的显示设备的 DPI 值。(继承自 Control)
    DisplayRectangle 获取表示控件的显示区域的矩形。(继承自 Control)
    Disposing 获取一个值,该值指示 Control 基类是否在释放进程中。(继承自 Control)
    Dock 获取或设置哪些控件边框停靠到其父控件并确定控件如何随其父级一起调整大小。(继承自 Control)
    DoubleBuffered 获取或设置一个值,该值指示此控件是否应使用辅助缓冲区重绘其图面,以减少或避免闪烁。
    Enabled 获取或设置一个值,该值指示控件是否可以对用户交互作出响应。(继承自 Control)
    Events 获取附加到此 Component 的事件处理程序的列表。(继承自 Component)
    Focused 获取一个值,该值指示控件是否有输入焦点。(继承自 Control)
    FocusedItem 获取或设置当前具有焦点的控件中的项。
    Font 获取或设置控件显示的文字的字体。(继承自 Control)
    FontHeight 获取或设置控件的字体的高度。(继承自 Control)
    ForeColor 获取或设置前景色。
    FullRowSelect 获取或设置一个值,该值指示单击某项是否选择其所有子项。
    GridLines 获取或设置一个值,该值指示:在包含控件中项及其子项的行和列之间是否显示网格线。
    Groups 获取分配给控件的 ListViewGroup 对象的集合。
    Handle 获取控件绑定到的窗口句柄。(继承自 Control)
    HasChildren 获取一个值,该值指示控件是否包含一个或多个子控件。(继承自 Control)
    HeaderStyle 获取或设置列标题样式。
    Height 获取或设置控件的高度。(继承自 Control)
    HideSelection 获取或设置一个值,该值指示当控件没有焦点时,该控件中选定的项是否保持突出显示。
    HotTracking 获取或设置一个值,该值指示当鼠标指针经过某个项或子项的文本时,文本的外观是否变为超链接的形式。
    HoverSelection 获取或设置一个值,该值指示当鼠标指针在项上停留几秒钟时是否自动选定该项。
    ImeMode 获取或设置控件的输入法编辑器 (IME) 模式。(继承自 Control)
    ImeModeBase 获取或设置控件的 IME 模式。(继承自 Control)
    InsertionMark 获取一个对象,在 ListView 控件内拖动项时,该对象用来指示预期的放置位置。
    InvokeRequired 获取一个值,该值指示调用方在对控件进行方法调用时是否必须调用 Invoke 方法,因为调用方位于创建控件所在的线程以外的线程中。(继承自 Control)
    IsAccessible 获取或设置一个值,该值指示控件对辅助功能应用程序是否可见。(继承自 Control)
    IsAncestorSiteInDesignMode 指示此控件的上级位置之一是否位于 DesignMode 中。 此属性为只读。(继承自 Control)
    IsDisposed 获取一个值,该值指示控件是否已经被释放。(继承自 Control)
    IsHandleCreated 获取一个值,该值指示控件是否有与它关联的句柄。(继承自 Control)
    IsMirrored 获取一个值,该值指示此控件是否为镜像控件。(继承自 Control)
    Items 获取包含控件中所有项的集合。(行数据)
    LabelEdit 获取或设置一个值,该值指示用户是否可以编辑控件中项的标签。
    LabelWrap 获取或设置一个值,该值指示当项作为图标在控件中显示时,项标签是否换行。
    LargeImageList 获取或设置当项以大图标在控件中显示时使用的 ImageList。
    LayoutEngine 获取控件的布局引擎的缓存实例。(继承自 Control)
    Left 获取或设置控件左边缘与其容器的工作区左边缘之间的距离(以像素为单位)。(继承自 Control)
    ListViewItemSorter 获取或设置用于控件的排序比较器。
    Location 获取或设置该控件的左上角相对于其容器的左上角的坐标。(继承自 Control)
    Margin 获取或设置控件之间的空间。(继承自 Control)
    MaximumSize 获取或设置大小,该大小是 GetPreferredSize(Size) 可以指定的上限。(继承自 Control)
    MinimumSize 获取或设置大小,该大小是 GetPreferredSize(Size) 可以指定的下限。(继承自 Control)
    MultiSelect 获取或设置一个值,该值指示是否可以选择多个项。
    Name获取或设置控件的名称。(继承自 Control)
    OwnerDraw获取或设置一个值,该值指示 ListView 控件是由操作系统绘制,还是由您提供的代码绘制。
    Padding 获取或设置 ListView 控件及其内容之间的间距。
    Parent 获取或设置控件的父容器。(继承自 Control)
    PreferredSize 获取可以容纳控件的矩形区域的大小。(继承自 Control)
    ProductName 获取包含控件的程序集的产品名称。(继承自 Control)
    ProductVersion 获取包含控件的程序集的版本。(继承自 Control)
    RecreatingHandle 获取一个值,该值指示控件当前是否在重新创建其句柄。(继承自 Control)
    Region 获取或设置与控件关联的窗口区域。(继承自 Control)
    RenderRightToLeft 
    此属性现已过时。(继承自 Control)
    ResizeRedraw 获取或设置一个值,该值指示控件在调整大小时是否重绘自己。(继承自 Control)
    Right 获取控件右边缘与其容器的工作区左边缘之间的距离(以像素为单位)。(继承自 Control)
    RightToLeft 获取或设置一个值,该值指示是否将控件的元素对齐以支持使用从右向左的字体的区域设置。(继承自 Control)
    RightToLeftLayout 获取或设置一个值,该值指示控件是否采用从右到左的布局。
    ScaleChildren 获取一个值,该值确定子控件的缩放。(继承自 Control)
    Scrollable 获取或设置一个值,该值指示在没有足够空间来显示所有项时,是否给滚动条添加控件。
    SelectedIndices 获取控件中选定项的索引。
    SelectedItems 获取在控件中选定的项。
    ShowFocusCues 获取一个值,该值指示控件是否应显示聚焦框。(继承自 Control)
    ShowGroups 获取或设置一个值,该值指示是否以分组方式显示项。
    ShowItemToolTips 获取或设置一个值,该值指示是否为 ListViewItem 中包含的 ListView 对象显示工具提示。
    ShowKeyboardCues 获取一个值,该值指示用户界面是否处于适当的状态以显示或隐藏键盘快捷键。(继承自 Control)
    Site 获取或设置控件的站点。(继承自 Control)
    Size 获取或设置控件的高度和宽度。(继承自 Control)
    SmallImageList 获取或设置 ImageList,当项在控件中显示为小图标时使用。
    Sorting 获取或设置控件中项的排序顺序。
    StateImageList 获取或设置与控件中应用程序定义的状态相关的 ImageList。
    TabIndex 获取或设置控件在其容器内的 Tab 键顺序。(继承自 Control)
    TabStop 获取或设置一个值,该值指示用户能否使用 Tab 键将焦点放到该控件上。(继承自 Control)
    Tag 获取或设置包含有关控件的数据的对象。(继承自 Control)
    Text此属性与此类无关。
    TileSize 获取或设置平铺视图中显示的图块的大小。
    Top 获取或设置控件上边缘与其容器的工作区上边缘之间的距离(以像素为单位)。(继承自 Control)
    TopItem 获取或设置控件中的第一个可见项。
    TopLevelControl 获取没有另一个 Windows 窗体控件作为其父级的父控件。 通常,这是控件所在的最外面的 Form。(继承自 Control)
    UseCompatibleStateImageBehavior 获取或设置一个值,该值ListView指示是否使用与 .NET Framework 1.1 或 .NET Framework 2.0 兼容的状态图像行为。
    UseWaitCursor 获取或设置一个值,该值指示是否将等待光标用于当前控件以及所有子控件。(继承自 Control)
    View 获取或设置项在控件中的显示方式。
    VirtualListSize 获取或设置处于虚拟模式时列表中包含的 ListViewItem 对象的数量。
    VirtualMode 获取或设置一个值,该值指示你是否为 ListView 控件提供了自己的数据管理操作。
    Visible 获取或设置一个值,该值指示是否显示该控件及其所有子控件。(继承自 Control)
    Width 获取或设置控件的宽度。(继承自 Control)
    WindowTarget 此属性与此类无关。(继承自 Control)

    C# ListView用法详解 很完整icon-default.png?t=M7J4https://blog.csdn.net/shu19880720/article/details/52311662

            ListView的五种视图:

            ①、LargeIcon:每个项都显示为一个最大化图标,在它的下面有一个标签

               ②、SmallIcon:每个项都显示为一个小图标,在它的右边带一个标签

              ③、List:每个项都显示为一个小图标,在它的右边带一个标签。各项排列在列中,没有列标头

              ④、Details:可以显示任意的列,但只有第一列可以包含一个小图标和标签,其它的列项只能显示文字信息,有列表头。

             ⑤、Tile:每个项都显示为一个完整大小的图标,在它的右边带项标签和子项信息。(只有Windows XP 和 Windows Server 2003 系列支持)

            案例:

            在Form中放置一个ListView控件

            ①ListView的view属性设置为details

            ②

            在ListView的Columns属性中ColumnsHeader集合编辑器中添加

            ③

             在ListView的Item属性中ListViewItem集合编辑器中添加

             ④代码实现添加后面的数据

    1. //方法1
    2. string x1 = "A001@张三@23岁";
    3. string[] Arr1 = x1.Split('@');
    4. ListViewItem lvt1 = new ListViewItem(Arr1[0]);
    5. lvt1.SubItems.Add(Arr1[1]);
    6. lvt1.SubItems.Add(Arr1[2]);
    7. this.listView1.Items.Add(lvt1);
    8. //方法2
    9. string x1 = "A001@张三@23岁";
    10. string[] Arr1 = x1.Split('@');
    11. ListViewItem lvt1 = new ListViewItem();
    12. lvt1.Text = Arr1[0];
    13. lvt1.SubItems.Add(Arr1[1]);
    14. lvt1.SubItems.Add(Arr1[2]);
    15. this.listView1.Items.Add(lvt1);

            二、ListView控件

             ListView控件又称为列表视图控件,它主要用于显示带图标的项列表,其中可以显示大图标、小图标和数据。

            1、在ListView控件中添加项

            在向ListView控件中添加项时,需要使用其Items属性的Add方法,该方法主要用于将项添加至项的集合中,其语法格式如下:

    1. public virtual ListViewItem Add(string text)
    2. public virtual ListViewItem Add(string text, int imageIndex);
    3. text:项的文本
    4. 返回值:已添加到集合中的LIstViewItem。

            例1:Add的简单用法

    1. using System;
    2. using System.Threading;
    3. using System.Windows.Forms;
    4. namespace _20220826_1
    5. {
    6. public partial class Form1 : Form
    7. {
    8. public Form1()
    9. {
    10. InitializeComponent();
    11. }
    12. private void button1_Click(object sender, EventArgs e)
    13. {
    14. listView1.Items.Add("姓名");
    15. listView1.Items.Add("年龄");
    16. }

            例2:将输入框中的文本添加到列表视图框中,并且清除空白字符

    1. using System;
    2. using System.Threading;
    3. using System.Windows.Forms;
    4. namespace _20220826_1
    5. {
    6. public partial class Form1 : Form
    7. {
    8. public Form1()
    9. {
    10. InitializeComponent();
    11. }
    12. private void button1_Click(object sender, EventArgs e)
    13. {
    14. listView1.Items.Add(textBox1.Text.Trim());
    15. //Trim的方法意思为:将输入的内容移除所有前导空白字符和尾部空白字符
    16. }
    17. }

            例子3

    1. using System;
    2. using System.Threading;
    3. using System.Windows.Forms;
    4. namespace _20220826_1
    5. {
    6. public partial class Form1 : Form
    7. {
    8. public Form1()
    9. {
    10. InitializeComponent();
    11. }
    12. private void button2_Click_1(object sender, EventArgs e)
    13. {
    14. ListViewItem item1 = new ListViewItem();
    15. ListViewItem item2 = new ListViewItem();
    16. item1.Text = "姓名";
    17. item2.Text = "年龄";
    18. listView1.Items.Add(item1);
    19. listView1.Items.Add(item2);
    20. }
    21. }
    22. }

            2、在ListView控件中移除项

            在移除ListView控件中的项时可以使用其Items属性的RemoveAt方法或Clear方法,其中,RemoveAt方法用于移除指定项,而Clear方法用于移除列表中的所有项。

            RemoveAt方法用于移出集合中指定索引处的项,其语法格式如下:

    1. public virtual void RemoveAt(int index)
    2. index:从零开始的索引(属于要移除的项)
    3. 例:
    4. private void button3_Click(object sender, EventArgs e)
    5. {
    6. listView1.Items.RemoveAt(listView1.SelectedItems[0].Index);
    7. //在列表中,鼠标点击选中后,点击button3后会将此项清除
    8. //未选中则报bug
    9. }

            Clear方法用于从集合中移除所有项,语法格式如下:

    1. public virtual void Clear()
    2. 例:
    3. listView1.Items.Clear();//移除所有的项

            3、选择ListView控件中的项

            在选择ListView控件中的项时,可以适用其Selected属性,该属性主要用于获取或设置一个值,该值指示是否选定此项,其语法格式如下:

    1. public bool Selected{get;set;}
    2. 属性值:如果选定此项,则为true;否则为false
    3. 例:
    4. listView1.Items[2].Selected = true;//使用Selected属性选中第3项

            4、为ListView控件中的项添加图标

            如果要为ListView控件中的项添加图标,则需要使用ImageList控件设置ListView控件中项的图标。ListView控件可显示3个图像列表中的图标,其中List视图、Details视图和SmallIcon视图显示SmallImageList属性中指定的图像列表里的图像;LargeIcon视图显示LargeImageList属性中指定的图像列表里的图像;列表视图在大图标或小图标旁显示StateImageList属性中设置的一组附加图标。实现的步骤如下:

    1. 将相应的属性(SmallImageList属性、LargeImageList属性或StateImageList属性)设置为想要使用的现有ImageList控件。
    2. 为每个具有关联图标的列表项设置ImageIndex属性或StateImageIndex属性,这些属性可以在代码总设置,也可以在“ListViewItem集合编辑器”中进行设置。若要在“ListViewItem集合编辑器”中设置,则可以在属性窗口中单击Items属性旁边的省略号按钮。

            5、在ListView控件中启动平铺视图功能

            通过启用ListView控件的平铺视图功能,可以在图形信息和文本信息之间提供一种视觉平衡。在ListView控件中,平铺视图功能与分组功能(或插入标记功能)结合使用。如果要启用平铺视图功能,则需要将ListView控件的View属性设置为Tile;另外,还可以通过设置TileSize属性来调整平铺的大小。

            6、为ListView控件中的项分组

            利用ListView控件的分组功能可以用分组形式显示相关项目组。在显示时,这些组由包含组标题的水平组标头分隔。可以使用ListView控件按字母顺序,则必须首先在设计器中或以编程方式创建一个或多个组,然后才可以向组中分配ListView项;另外,还可以用编程方式将一个组中的项移至另一个组中。步骤如下:

            ①添加组:使用Groups集合的Add方法可以向ListView控件中添加组,该方法用于将指定的ListViewGroup添加到集合中,其语法格式如下:

    1. public int Add(ListViewGroup group)
    2. group:要添加到集合中的ListViewGroup
    3. 返回值:该组在集合中的索引;如果集合中已存在该组,则为-1
    4. 例:
    5. listView1.Group.Add(new ListViewGroup("测试",_HorizontalAlignment.Left));

            ②移除组:使用Groups集合的RemoveAt方法或Clear方法可以移除指定的组或移除所有的组。

            RemoveAt方法用来移除集合中指定索引位置的组,其语法格式为:

    1. public void Clear()
    2. 例:
    3. listView1.Group.RemoveAt(1);
    4. listView1.Group.Clear();

            ③向组分配项或在组之间移动项

            通过设置ListView控件中各个项的System.Windows.Forms.ListViewItem.Group属性,可以向组分配项或在组之间移动项。

    1. 例:
    2. listView1.Items[0].Group = listView1.Group[0];

            备注:ListView是一种列表控件,在实现诸如显示文件详细信息这样的功能时,推荐使用。另外,由于ListView有多种显示样式,因此在实现类似Windows系统的“缩略图”、“平铺”、“列表”、“详细信息”等功能时,经常需要使用ListView控件。

  • 相关阅读:
    注解实现接口幂等性
    Java赋值运算符(=)
    万字详解Spring相关组件配置原理
    技术问题分析和解决汇总,持续维护
    秋季开学,培训机构如何做好线下招生?
    局域网内网管理软件有哪些功能?(局域网内网管理软件有哪些)
    java毕业设计宠物交易mybatis+源码+调试部署+系统+数据库+lw
    使用注解开发,lombox P16,P17,P18
    hel-micro
    基于TCP的RPC服务
  • 原文地址:https://blog.csdn.net/qq_45336030/article/details/126544558