您的当前位置:首页>全部文章>文章详情

【C#】C# Winform ListView用法

CrazyPanda发表于:2024-01-31 23:37:04浏览:378次TAG:

目录

添加标题

显示网格

添加数据到表格中

自定义其他属性

结束




添加标题

Winfrom 界面中添加一个 ListView 组件,然后点击右上角的箭头,点击编辑列

1.png

添加下面标题,然后点击确定

1.png

此时 ListView 中还是一片空白,不能显示这些标题,在视图这里选择 Details

1.png

就会如下图所示,虽然标题出来了,内容确实一块白版,此时还是觉得 DataGridView 组件好用啊

1.png


显示网格

此时,表格只是一片空白,可以在属性面板中设置,显示网格,如下图

 1.png

 这时,就如下图所示,效果就出来了,但是里面还是缺点东西

1.png


添加数据到表格中

不会添加数据怎么办?直接从网上复制,如下:

private void Button_Test_Click(object sender, EventArgs e)
{
    //数据更新,UI暂时挂起,直到EndUpdate绘制控件,可以有效避免闪烁并大大提高加载速度
    this.listView1.BeginUpdate();
    //添加5行数据
    for (int i = 0; i < 5; i++)   
    {
        ListViewItem lvi = new ListViewItem();
        lvi.SubItems.Add("第1列,第" + i + "行");
        lvi.SubItems.Add("第2列,第" + i + "行");
        lvi.SubItems.Add("第3列,第" + i + "行");
        lvi.SubItems.Add("第4列,第" + i + "行");
        lvi.SubItems.Add("第5列,第" + i + "行");
        this.listView1.Items.Add(lvi);
    }
    //结束数据处理,UI界面一次性绘制。
    this.listView1.EndUpdate(); 
}

运行后,我们看看效果,what? 第一行序号居然没有数据,这是什么鬼?

1.png

断点看看,ListViewItem 数组索引 0 处居然是空的

1.png

用下面代码测试了一下,效果同上一模一样,在数组0处就是添加了一个默认空的数据进去

private void Form1_Load(object sender, EventArgs e)
{
    ListViewItem litem = new ListViewItem();
    for (int i = 0; i < 5; i++)
    {
        litem.SubItems.Add(i.ToString());
    }
    Console.WriteLine(litem.SubItems.Count);
}

找了一下资料,不知道怎么回事,但是我还是找到了解决方法:

private void Button_Test_Click(object sender, EventArgs e)
{
    //数据更新,UI暂时挂起,直到EndUpdate绘制控件,可以有效避免闪烁并大大提高加载速度
    listView1.BeginUpdate();
    //添加5行数据
    for (int i = 0; i < 5; i++)   
    {
        int column = i + 1;
        ListViewItem lvi = listView1.Items.Add("第1列,第" + column + "行");
        lvi.SubItems.Add("第2列,第" + column + "行");
        lvi.SubItems.Add("第3列,第" + column + "行");
        lvi.SubItems.Add("第4列,第" + column + "行");
        lvi.SubItems.Add("第5列,第" + column + "行");
    }
    //结束数据处理,UI界面一次性绘制。
    listView1.EndUpdate(); 
}

这种写法看着非常的淡疼,暂时也没其他办法了,有其他更好的写法欢迎留言告诉我。

1.png

现在效果算是有了,但我想改变其中一个单元格的属性怎么办呢?


自定义其他属性

例1:改变背景颜色,和字体颜色

private void Button_Test_Click(object sender, EventArgs e)
{
    //数据更新,UI暂时挂起,直到EndUpdate绘制控件,可以有效避免闪烁并大大提高加载速度
    listView1.BeginUpdate();
    //添加5行数据
    for (int i = 0; i < 5; i++)
    {
        int column = i + 1;
        ListViewItem lvi = listView1.Items.Add("第1列,第" + column + "行");
        lvi.SubItems.Add("第2列,第" + column + "行");
        lvi.SubItems.Add("第3列,第" + column + "行");
        lvi.SubItems.Add("第4列,第" + column + "行");
        lvi.SubItems.Add("第5列,第" + column + "行");
        if (column % 2 == 0)
        {
            lvi.BackColor = Color.Red;
            lvi.ForeColor = Color.White;
        }
        else
        {
            lvi.BackColor = Color.Green;
            lvi.ForeColor = Color.Black;
        }     
    }
    //结束数据处理,UI界面一次性绘制。
    listView1.EndUpdate(); 
}

效果:

1.png

 其他的属性就不作演示了,写法差不多。


结束

如果这个帖子对你有用,欢迎关注 + 点赞 + 留言,谢谢

end


原文链接https://blog.csdn.net/qq_38693757/article/details/123017554


猜你喜欢

【C#】C# Winform DataGridView 数据刷新问题
目录一、问题二、创建项目三、绑定空的数据源四、绑定有数据的数据源五、修改绑定的数据源六、解决数据源刷新问题七、解决刷新数据界面闪烁一、问题DataGridView 是比较常用的表格控件,在 DataGridView 中显示数据,&nbsp;一般使用 dataGridView1.DataSource = 数据源,来绑定数据,数据源可以是 DataTable、List、Dictionary 等,那么如何做到及时刷新数据呢,这里我提出几个问题:1.绑定一个空的数据源,后面向数据源添加数据。2.Data
发表于:2024-02-05 浏览:353 TAG:
【C#】从零开始用C#写一个桌面应用程序(二)一个表白程序
恶搞表白小程序如何添加按钮,如何添加属性和事件请移步前文。基础操作第一步:新建窗口&nbsp;&nbsp;在工具箱内找到label和button,拖到form上,设置它们的size属性,autosize属性,text属性。第二步:添加事件为了实现我们的效果,需要给三个按钮分别设计点击事件,鼠标移入事件,鼠标点下事件。分别为click,mouseenter,mousedown事件。第三步:实现移动逻辑this获取form对象,clientsize获取实时大小,使用随机数值,设置对应按钮位置。将对应
发表于:2024-01-30 浏览:304 TAG:
【C#】C# Winform 文本面板带滚动条
在PC软件开发中经常有这样的需求,需要在一个固定大小的面板中显示一些内容,并且面板能上下拖动,将所有的内容完整的展示,有点类似网页上看新闻,如果要在 winfrom 中要如何实现的呢,下面就演示如何实现的吧效果:1.新建一个winform 项目,在界面中拖入一个Panel&nbsp;将 panel1 的&nbsp;AutoScroll 设置为 True2.再次拖入一个&nbsp;Panel ,将高度拉长,这时就自动出现了滚动条,只是此时里面还没有任何内容,下面就在 panel2 中加入一点内容。
发表于:2024-02-03 浏览:329 TAG:
【C#】C# Winform Label 控件
目录一、概述二、基本用法1.控件内容显示2.控件的外观3.自定义控件的大小4.控件的内边距&nbsp;5.设置文本的固定位置6.控件的事件结束一、概述Label 控件是 winform 开发中最常用的一个控件,一般用做显示文本,也有时用做打开链接等操作。二、基本用法新建一个 winform 项目,点击 form1 界面,找到工具箱,在工具箱里找到 Label ,拖入到界面即可。1.控件内容显示label 拖入界面中,如下,单击在属性界面就能看到具体的控件属性在这里有两个重要的属性:1.Name在
发表于:2024-02-04 浏览:298 TAG:
【C#】C# Winform SplitContainer组件创建侧边菜单
效果一,SplitContainer 基本操作新建一个 Winform 项目,在Form1中拖进一个 SplitContainer 组件默认的界面如下这时候,你会发现,左侧菜单栏的宽度也太宽了吧,按照以前的经验,你一定会用鼠标去拖拽,这时候你就会发现,鼠标根本拖不动,不信你可以试试这时候,我们按Esc键,鼠标再移动到边框的时候,鼠标图标就会变成一个 “+” 状的图标,这时候就可以拖拽了此时,左侧的Panel1内还没有任何组件,运行后的效果我们添加一个按钮到&nbsp;Panel1 试试运行后发现
发表于:2024-02-01 浏览:547 TAG:
【C#】C# Winform 多个程序之间的通信(非Scoket)
效果功能:打开窗体自动连接主程序,并自动添加到列表,可以向子程序群发消息可以向单个程序单独发送消息在退出程序后,添加的程序列表会自动移除一、概述参考:C# Winfrom程序之间通讯_c# sendmessege copydatastruct 返回多个值_熊思宇的博客-CSDN博客在之前我写过 winform 程序与程序之间的通信,但是这个版本有个问题,那就是只能由两个程序进行通信,同时打开多个程序的话,接收方收到的数据就会一模一样,这次发表这个教程,也就是要解决这个问题。归根结底,还是&amp;nbs
发表于:2024-02-03 浏览:304 TAG:
【C#】C# Winfrom Chart 图表控件 柱状图、折线图
目录一、参考二、柱状图1.新建项目2.修改图表样式3.绑定数据4.删除Series1图例1)使用属性窗体删除2)使用代码删除5.自定义X轴的刻度值1)使用List绑定2)使用LabelStyle.Format绑定6.自定义Y轴的刻度值7.X轴刻度值显示不全的解决方法8.修改X Y刻度值的字体样式9.X轴刻度值旋转90°10.禁用Y轴刻度线11.去掉Y轴刻度值12.改变柱子的宽度13.设置网格线的颜色14.设置网格线的线型三、折线图1.图表设置2.绑定数据结束效果:一、参考c# Chart设置样式
发表于:2024-02-02 浏览:422 TAG:
【C#】Winform NanUI 相关功能整合
目录NanUI 0.88版本 去掉启动界面(遮罩)NanUI 0.88版本 读取本地资源和嵌入式资源NanUI 0.77版本 打开控制台NanUI 0.77版本 C#调用多个参数的JS方法NanUI 0.77版本 传递数组参数NanUI 0.77版本 设置窗体全屏显示(类似Kiosk模式)NanUI 0.77版本 Bootstrap类 APINanUI 0.88版本 去掉启动界面(遮罩)启动界面是作者给我们显示公司产品的Logo用的,如果用不着可以去掉,但必须要更改源码,如果不想改源码,直接将启
发表于:2024-02-09 浏览:380 TAG:
【C#】C# Winfrom 常用功能整合-1
目录Winform 最大化遮挡任务栏和全屏显示问题Winfrom 给图片画 矩形,椭圆形,文字Winfrom TabControl选项卡 动态添加,删除,修改Winform ErrorProvider控件Winform 读取Resources图片Winfrom 读取内存条占用大小,硬盘占用大小Winform 全局捕获异常Winform 用线程写入TXT文件,并更新UI和进度Winform 摄像头识别二维码,保存图片Winform 判断窗体是否已打开Winform 动态添加菜单列表,点击切换对应面
发表于:2024-02-02 浏览:406 TAG:
【C#】C# 开源框架(整理)
C# 开源框架(整理)Json.NEThttp://json.codeplex.com/Json.Net 是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更加简单。通过Linq To JSON可以快速的读写Json,通过JsonSerializer可以序列化你的.Net对象。让你轻松实现.Net中所有类型(对象,基本数据类型 等)和Json的转换。Math.NEThttp://www.mathdotnet.com/Math.NET的目标是为提供一款
发表于:2024-01-30 浏览:344 TAG: