百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

63.C# ListView控件

liuian 2024-12-10 18:06 47 浏览

摘要


Windows 窗体 ListView 控件显示带图标的项列表。 你可以使用列表视图创建类似 Windows 资源管理器右窗格的用户界面。 该控件有四种视图模式:LargeIcon、SmallIcon、List 和 Details。

正文


属性


CheckBoxes

获取或设置一个值,该值指示控件中各项的旁边是否显示复选框。

CheckedIndices

获取控件中当前选中项的索引。

CheckedItems

获取控件中当前选中的项。

Columns

获取控件中显示的所有列标题的集合。

FullRowSelect

获取或设置一个值,该值指示单击某项是否选择其所有子项。

GridLines

获取或设置一个值,该值指示:在包含控件中项及其子项的行和列之间是否显示网格线。

GroupImageList

当前设置 GroupIcon 映像列表。

Groups

获取分配给控件的 ListViewGroup 对象的集合。

Items

获取包含控件中所有项的集合。

LabelEdit

获取或设置一个值,该值指示用户是否可以编辑控件中项的标签。

LabelWrap

获取或设置一个值,该值指示当项作为图标在控件中显示时,项标签是否换行。

SelectedItems

获取在控件中选定的项。

ShowGroups

获取或设置一个值,该值指示是否以分组方式显示项。

ShowItemToolTips

获取或设置一个值,该值指示是否为 ListViewItem 中包含的 ListView 对象显示工具提示。

SmallImageList

获取或设置 ImageList,当项在控件中显示为小图标时使用。

Sorting

获取或设置控件中项的排序顺序。

StateImageList

获取或设置与控件中应用程序定义的状态相关的 ImageList。

SmallImageList

获取或设置 ImageList,当项在控件中显示为小图标时使用。

Sorting

获取或设置控件中项的排序顺序。

StateImageList

获取或设置与控件中应用程序定义的状态相关的 ImageList。

LargeIcon 模式在项文本旁边显示大图标;如果控件足够大,项将出现在多列中。

SmallIcon 模式是相同的,只是它显示的是小图标。

List 模式显示小图标,但始终位于单列中。

Details 模式在多列中显示项。

常用Detials设置

lstDetail.View = View.Details;//设置视图

添加列

//添加列
lstDetail.Columns.Add("设备号", 120, HorizontalAlignment.Left);
lstDetail.Columns.Add("设备名称", 150, HorizontalAlignment.Left);
lstDetail.Columns.Add("当前状态", 150, HorizontalAlignment.Left);
lstDetail.Columns.Add("运行时长", 200, HorizontalAlignment.Left);

添加行

//添加行
var item = new ListViewItem();
item.Text = "A0001";//设备号
item.SubItems.Add("S7-1200"); //设备名称
item.SubItems.Add("RUN"); //当前状态
item.SubItems.Add("500"); //运行时长

//在批量载入时,尽量使用BeginUpdate,EndUpdate,减少刷新
lstDetail.BeginUpdate();
lstDetail.Items.Add(item);
lstDetail.Items[lstDetail.Items.Count - 1].EnsureVisible();//滚动到最后
lstDetail.EndUpdate();

给Detail添加图标

ImageList控件(存储图像控件)用于存储图像资源,然后在控件上显示出来,这样就简化了对图像的管理。ImageList 控件的主要属性是 Images,它包含关联控件将要使用的图片。每个单独的图像可通过其索引值或其键值来访问。

添加图片

lstDetail.SmallImageList = simgs;//给listview 绑定小图标列表
item.ImageIndex = 0;//指定对应的图标,用索引

给列表增加勾选框

lstDetail.CheckBoxes = true;
lstDetail.FullRowSelect = true;//整行选中
//添加行
lstDetail.BeginUpdate();
for (int i = 0; i < 100; i++)
{
    var item = new ListViewItem();
    item.Text = "A000"+i.ToString();//设备号
    item.SubItems.Add("S7-1200"); //设备名称
    item.SubItems.Add("RUN"); //当前状态
    item.SubItems.Add(new Random().Next(0,1000).ToString()); //运行时长
    item.ImageIndex = 0;//指定对应的图标,用索引
    lstDetail.Items.Add(item);
}
lstDetail.EndUpdate();
private void btnGetSelected_Click(object sender, EventArgs e)
{
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < lstDetail.Items.Count; i++)
    {
        if (lstDetail.Items[i].Checked)
        {
            sb.AppendLine(lstDetail.Items[i].Text);
        }
    }
    MessageBox.Show(sb.ToString());
}

StringBuilder sb = new StringBuilder();
foreach (ListViewItem item in lstDetail.CheckedItems)
{
    sb.AppendLine(item.Text);    
}
MessageBox.Show(sb.ToString());

列头排序

public class ListViewItemComparer : IComparer
{
    /// <summary>
    /// 指定按照哪个列排序
    /// </summary>
    private int ColumnToSort;
    /// <summary>
    /// 指定排序的方式
    /// </summary>
    private System.Windows.Forms.SortOrder OrderOfSort;
    /// <summary>
    /// 声明CaseInsensitiveComparer类对象
    /// </summary>
    private System.Collections.CaseInsensitiveComparer ObjectCompare;
    /// <summary>
    /// 构造函数
    /// </summary>
    public ListViewItemComparer()
    {
        // 默认按第一列排序
        ColumnToSort = 0;
        // 排序方式为不排序
        OrderOfSort = System.Windows.Forms.SortOrder.None;
        // 初始化CaseInsensitiveComparer类对象
        ObjectCompare = new System.Collections.CaseInsensitiveComparer();
    }
    /// <summary>
    /// 重写IComparer接口.
    /// </summary>
    /// <param name="x">要比较的第一个对象</param>
    /// <param name="y">要比较的第二个对象</param>
    /// <returns>比较的结果.如果相等返回0,如果x大于y返回1,如果x小于y返回-1</returns>
    public int Compare(object x, object y)
    {
        int compareResult;
        System.Windows.Forms.ListViewItem listviewX, listviewY;
        // 将比较对象转换为ListViewItem对象
        listviewX = (System.Windows.Forms.ListViewItem)x;
        listviewY = (System.Windows.Forms.ListViewItem)y;
        string xText = listviewX.SubItems[ColumnToSort].Text;
        string yText = listviewY.SubItems[ColumnToSort].Text;
        int xInt, yInt;

        if (int.TryParse(xText, out xInt) && int.TryParse(yText, out yInt)) //是否全为数字
        {
            //比较数字
            compareResult = CompareInt(xInt, yInt);
        }
        else
        {
            //比较对象
            compareResult = ObjectCompare.Compare(xText, yText);
        }
        // 根据上面的比较结果返回正确的比较结果
        if (OrderOfSort == System.Windows.Forms.SortOrder.Ascending)
        {
            // 因为是正序排序,所以直接返回结果
            return compareResult;
        }
        else if (OrderOfSort == System.Windows.Forms.SortOrder.Descending)
        {
            // 如果是反序排序,所以要取负值再返回
            return (-compareResult);
        }
        else
        {
            // 如果相等返回0
            return 0;
        }
    }
    /// <summary>
    /// 比较两个数字的大小
    /// </summary>
    /// <param name="ipx">要比较的第一个对象</param>
    /// <param name="ipy">要比较的第二个对象</param>
    /// <returns>比较的结果.如果相等返回0,如果x大于y返回1,如果x小于y返回-1</returns>
    private int CompareInt(int x, int y)
    {
        if (x > y)
        {
            return 1;
        }
        else if (x < y)
        {
            return -1;
        }
        else
        {
            return 0;
        }
    }
    /// <summary>
    /// <summary>
    /// 获取或设置按照哪一列排序.
    /// </summary>
    public int SortColumn
    {
        set
        {
            ColumnToSort = value;
        }
        get
        {
            return ColumnToSort;
        }
    }
    /// <summary>
    /// 获取或设置排序方式.
    /// </summary>
    public System.Windows.Forms.SortOrder Order
    {
        set
        {
            OrderOfSort = value;
        }
        get
        {
            return OrderOfSort;
        }
    }
 }
private void lstDetail_ColumnClick(object sender, ColumnClickEventArgs e)
{
    if(e.Column== comparer.SortColumn)
    {
        if (comparer.Order == SortOrder.Ascending)
        {
            comparer.Order = SortOrder.Descending;
        }
        else
        {
            comparer.Order = SortOrder.Ascending;
        }
    }
    else
    {
        comparer.SortColumn = e.Column;
        comparer.Order = SortOrder.Ascending;
    }
    lstDetail.Sort();
}
ListViewItemComparer comparer=new ListViewItemComparer();
public FrmMain()
{
    InitializeComponent();
    lstDetail.ListViewItemSorter = comparer;
}

相关推荐

centos系统安装教程(centos安装总结)

之前在线在Debian内安装Gentoo,大体步骤如下:1.mkdir/new,chroot进去正常安装新系统。2.将静态编译的busybox放到根目录。3.停掉所有服务,umount所有有关目录。...

不用电脑怎么恢复(不用电脑怎么恢复出厂设置)

操作方法01方法一:通过设置重置电脑使用快捷键Windows+A,点击所有设置,点击更新系统-恢复,重置此电脑点开始。02选择仅保留我的文件,删除应用和设置,提示窗口会显示出将被删除的应用,点击下一步...

最强视频播放器(2020视频播放器排行榜前十名)

应该是MXPlayer。他是一款安卓版上十分强悍的视频播放器,他以解码性能强、兼容性高而闻名,并且,对视频字幕的支持更是堪称一绝,支持在线匹配,对特效字幕的支持也是非常的高的。作为一款优质的手机视频播...

三星固态驱动官网(三星固态官方软件)

三星手机序列号查询官网是http://www.samsung110.com/。手机序列号(S/N号)查询方法:设置-关于手机-状态-序列号(序号)。或通过以下方式查询:通过机器包装盒上的标贴查询用...

雨林木风u盘装机教程(雨林木风u盘装系统,步骤)

电脑系统安装步骤:1、用【u启动u盘启动盘制作工具】制作u启动盘,重启电脑等待出现开机画面按下启动快捷键,选择u盘启动进入到u启动主菜单,选取“【02】Win8PE装机维护版(新机器)”选项2、进...

无法连接到这个网络是怎么回事

有可能是网络本身有问题,需要联系运营商解决。也有可能是因为网卡驱动问题,首先鼠标右击开始按钮,然后点击设备管理器,双击网络适配器,最后查看网卡驱动有没有出现黄色的感叹号,如果有的话,右击选择更新驱动程...

刷机精灵怎么解除锁屏密码(刷机精灵怎么解除锁屏密码设置)

刷机精灵解锁手机锁屏密码方法:下载好刷机精灵。打开链接手机,之后在刷机精灵页面里能看到“实用工具”的选项。解除手机解锁图案要获取root权限,若没有获取的可以在这里点击获取root权限的选项。获取了...

联想云服务官网(联想云服务官网查找手机)

华为手机也是可以下载云服务软件安装然后使用联想账号登陆云服务的。部分云服务功能将无法使用。登录联想云服务方法:点开云服务软件,选择立即使用,即出现:手机号码登入,邮箱登入,第三方登入;手机号码登入,邮...

宏基笔记本系统重装快捷键(宏基笔记本重装系统步骤)

如果用系统u盘、光盘安装:1、需要在Bios中设置从u盘或光盘启动。2、启动电脑,dcer一般默认按Del键(有些型号F2、F12)进入Bios设置界面。F2键。宏碁笔记本重装系统按F2键,进入BIO...

windows10官网打不开(win10系统官网打不开)

你可以通过以下步骤在Windows10官网上更新操作系统:1.打开windows官网,进入“下载和工具”页面。2.单击“立即下载工具”按钮,将下载“Windows10更新助手”。3.运行“...

win7无线网卡插上没反应(win7无线网卡插上没反应怎么回事)

1、如果是路由器的问题,如果原来可以用,暂时不能用了,在有就是恢复出厂设置,从新设置就可以用了(这是在物理连接正确的前提下)。2、如果是宽带本身的问题,首先直接联接宽带网线测试,如果是宽带的问题,联系...

下载爱奇艺安装(下载爱奇艺安装包)

如果你的电脑无法安装爱奇艺,可能有以下原因,第一种原因可能是你的电脑系统版本太低,升级你的电脑操作系统,可以促进爱奇艺的下载,第二种情况是你下载的爱奇艺可能捆绑一些病毒软件,系统的杀毒软件识别有霸王软...

5000元左右的电脑配置单(5000左右的电脑配置推荐2021)

五千元至六千元价位电脑主机,如果组装机,可以配置配置很高的档次,电脑主机主板可以配置不低于十二代产品,可以设四个内存条插槽,相应的内存可以配置128GB内存条2至四根,电脑处理器也同样不低于十二代产品...

快速关机(快速关机按什么键)
快速关机(快速关机按什么键)

1、我们直接长按手机右侧的电源键,大概5秒的时间,这时候手机页面会直接显示是否关机,选择关机就可以直接关机了。2、找到手机一侧的音量“+”键,再找到电源按键,之后只需同时按住音量“+”键和电源按钮,直到手机屏幕关闭即可强制关机。3、点击【设...

2025-12-25 08:05 liuian

云电脑免登录破解版(“云电脑破解版”)

虎牙YOWA云游戏平台便是一款完全免费的产品,只要玩家在自己的账号上购买过相关的产品即可通过云游戏平台直接登陆。但云游戏平台终归只是改变玩家的游戏方式,用户最终还是要回归于游戏中,如果难以保证游戏体验...