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
string x1 = "A001@张三@23岁";
string[] Arr1 = x1.Split('@');
ListViewItem lvt1 = new ListViewItem(Arr1[0]);
lvt1.SubItems.Add(Arr1[1]);
lvt1.SubItems.Add(Arr1[2]);
this.listView1.Items.Add(lvt1);

//方法2
string x1 = "A001@张三@23岁";
string[] Arr1 = x1.Split('@');
ListViewItem lvt1 = new ListViewItem();
lvt1.Text = Arr1[0];
lvt1.SubItems.Add(Arr1[1]);
lvt1.SubItems.Add(Arr1[2]);
this.listView1.Items.Add(lvt1);

        二、ListView控件

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

        1、在ListView控件中添加项

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

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

        例1:Add的简单用法

using System;
using System.Threading;
using System.Windows.Forms;

namespace _20220826_1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            listView1.Items.Add("姓名");
            listView1.Items.Add("年龄");
        }

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

using System;
using System.Threading;
using System.Windows.Forms;

namespace _20220826_1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            listView1.Items.Add(textBox1.Text.Trim());
            //Trim的方法意思为:将输入的内容移除所有前导空白字符和尾部空白字符
        }
}

        例子3

using System;
using System.Threading;
using System.Windows.Forms;

namespace _20220826_1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button2_Click_1(object sender, EventArgs e)
        {
            ListViewItem item1 = new ListViewItem();
            ListViewItem item2 = new ListViewItem();

            item1.Text = "姓名";

            item2.Text = "年龄";

            listView1.Items.Add(item1);
            listView1.Items.Add(item2);
        }
    }
}

        2、在ListView控件中移除项

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

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

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

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

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

        3、选择ListView控件中的项

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

public bool Selected{get;set;}
属性值:如果选定此项,则为true;否则为false
例:
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添加到集合中,其语法格式如下:

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

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

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

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

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

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

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

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

猜你喜欢

转载自blog.csdn.net/qq_45336030/article/details/126544558