有时候我们需要展示表格格式的数据,首先想到的是用datagridview控件,比如更改datagridview某一行的数据,这样操作起来就比较麻烦,而listview属于轻量级,刷新和更改相对来说效率比较高。

首先展示最终结果:

实现步骤:

1.在设计里创建listview控件。

2.编辑列,可根据自己需求更改Name、Text、TextAlign、Width等。

3.设置View属性为 Details(细节),此时即可以显示列名

4.设置GridLines为True显示表格线,设置FullRowSelect为True单击某个单元格选中一行。

最后结果如下:

关键部分代码:

        private void Form4_Load(object sender, EventArgs e)
{
string epc = "E20001234567890123456789";
string dateTime = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff");
string antPort = "";
string clientIp = "10.10.10.80"; bool findFlag = false; //默认为当前epc不存在列表中
int itemIdx = ; //listview索引 foreach (KeyValuePair<int, string> item in dicInventoryData)
{
if (item.Value.Contains(epc))
{
findFlag = true;
itemIdx = item.Key;
}
} if (findFlag) //存在,更新数据
{
// 更新次数
listInventoryData.Items[itemIdx].SubItems[].Text = Int32.Parse(listInventoryData.Items[itemIdx].SubItems[].Text) + + "";
//更新时间
listInventoryData.Items[itemIdx].SubItems[].Text = dateTime; // 取天线信息
string strAntennaPorts = listInventoryData.Items[itemIdx].SubItems[].Text;
if (!strAntennaPorts.Contains(antPort))
{
// 更新天线信息
strAntennaPorts += "," + antPort;
listInventoryData.Items[itemIdx].SubItems[].Text = strAntennaPorts;
}
}
else //不存在,添加数据
{
ListViewItem item = new ListViewItem();
//序号
item.Text = (listInventoryData.Items.Count + ) + "";
//客户端
item.SubItems.Add(clientIp);
//epc
item.SubItems.Add(epc);
//天线号
item.SubItems.Add(antPort);
// 次数
item.SubItems.Add("");
//时间
item.SubItems.Add(dateTime); listInventoryData.BeginUpdate();
listInventoryData.Items.Add(item);
listInventoryData.EndUpdate();
// 添加到列表
dicInventoryData.Add((int)imparityCount, epc);
// 标签个数加1
imparityCount++;
}
}

常用属性:

  1.HeaderStyle - “详细信息”视图中列标头的样式。

    None - 不显示列标头

    Nonclickable - 不可点击

    Clickable - 可点击

  2.HideSelection - 当控件没有焦点时,移除选定项的突出显示。

  3.MultiSelect - 允许选择多项 (True/False)。

  4.CheckBoxes - 指示复选框是否显示在项旁边。

  5.FullRowSelect - 指示当项被选中时,其所有子项是否同该项一起突出显示。

  6.GridLines - 在项和子项周围显示网格线。仅在“详细信息”视图中显示。

  7.View - 选择可以显示项的不同视图中的一种。

常用方法:

1.BeginUpdate:避免在调用EndUpdate 方法之前描述控件。当插入大量数据时,可以有效地避免控件闪烁,并能大大提高速度。

2.EndUpdate:在BeginUpdate 方法挂起描述后,继续描述列表视图控件。(结束更新)

3.EnsureVisible:列表视图滚动定位到指定索引项的选项行。(效果类似于TopItem属性)

4.FindItemWithText:查找以给定文本值开头的第一个 ListViewItem。

5.FindNearestItem:按照指定的搜索方向,从给定点开始查找下一个项。提示:只有在LargeIcon或SmallIcon视图才能使用该方法。

常用事件:

1.AfterLabelEdit:当用户编辑完项的标签时发生,需要LabelEdit属性为true。

2.BeforeLabelEdit:当用户开始编辑项的标签时发生。

3.ColumnClick:当用户在列表视图控件中单击列标头时发生。

参考:

https://www.cnblogs.com/shadowme/p/6250070.html

https://www.cnblogs.com/qq450867541/p/6164936.html

C# listview展示表格格式的更多相关文章

  1. 传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。此 RPC 请求中提供了过多的参数。最多应为 2100

    出现这个问题的背景是,判断一批激活码在系统中是否已经存在,很傻的一个作法是,把这一批激活码,以in(in (‘ddd‘,‘aaa‘))的形式来处理,导致问题的出现. 后来,查找资料,http://bb ...

  2. 转:传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确 .

    近期在做淘宝客的项目,大家都知道,淘宝的商品详细描述字符长度很大,所以就导致了今天出现了一个问题 VS的报错是这样子的  ” 传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确“ 还说某 ...

  3. SQLServer 2000 Driver for JDBC][SQLServer]传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确解决方法

    问题:[SQLServer 2000 Driver for JDBC][SQLServer]传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确.参数 1 (""): ...

  4. Xamarin.Android 调用Web Api(通过ListView展示远程获取的数据)

    xamarin.android如何调用sqlserver 数据库呢(或者其他的),很多新手都会有这个疑问.xamarin.android调用远程数据主要有两种方式: 在Android中保存数据或调用数 ...

  5. 安卓TextView完美展示html格式代码

    对于TextView展示html格式代码,最简单的办法就是使用textview.setText(Html.fromHtml(html));,即便其中有img标签,我们依然可以使用ImageGetter ...

  6. Vue之展示PDF格式的文档

    事实上有很多种在前端展示PDF格式文档的方法,小编也用过好多种,例如有<iframe>.<embed>和<object>这些标签,但是在Vue项目里,这些方法都不能 ...

  7. SQL :“传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确” 错误

    其中在DAL层调用存储过程来插入数据的参数 SqlParameter[] parameters = {                                            new S ...

  8. sqlserver2008 传入的表格格式数据流(tds)协议流不正确。

    起因是在sql 2008 里使用 sql prompt 报了一个内部连接致命错误,原本应该想到是数据库连接问题的,奇怪的是能连接上数据库也能查询表仅仅是用不了工具没有智能提示. 几经查询无果,度娘上之 ...

  9. 解决invalid record found in VCF4 file (at least 8 tab-delimited fields expected)问题,批量修改空格改为制表格格式

    出现这种问题说明一般存在两个问题: 第一,vcf文件不足8个分割制表符,比如像如下文件: 为了解决这个问题,说明在做snp filter时候,需要提取至少8个制表符的字符串,比如,像如下文件所示: 第 ...

随机推荐

  1. outlook2013 关闭时最小化到任务栏的完美解决方法

    使用 Keep Outlook Running 加载项 文件->选项->加载项 点击最下面的“转到”按钮 *用管理员身份运行Outlook才可以将 Keep Outlook Running ...

  2. 异步简析之BlockingCollection实现生产消费模式

    目前市面上有诸多的产品实现队列功能,比如Redis.MemCache等... 其实c#中也有一个基础的集合类专门用来实现生产/消费模式 (生产模式还是建议使用Redis等产品) 下面是官方的一些资料和 ...

  3. 开发自己的react-native组件并发布到npm[转]

    原文链接:https://www.jianshu.com/p/091a68ea1ca7 写在前面 在做react-native开发的时候,我们经常会找到一些第三方组件,并且通过npm install的 ...

  4. 感动到哭的SBT下载

    在centos上搭建spark开发环境.使用IntelliJ IDEA做scala开发,需要配置SBT.一直卡在从maven上下载jar包的过程中,还几次都下失败了.试过vpn也没有用. 还好偶然看到 ...

  5. SQL 收缩日志

    USE [master]ALTER DATABASE RcBalance SET RECOVERY SIMPLE WITH NO_WAITALTER DATABASE RcBalance SET RE ...

  6. PCB铺铜

    问:为何要铺铜?答:一般铺铜有几个方面原因.1.EMC.对于大面积的地或电源铺铜,会起到屏蔽作用,有些特殊地,如PGND起到防护作用.2.PCB工艺要求.一般为了保证电镀效果,或者层压不变形,对于布线 ...

  7. lua 语言基础

    1.数据类型: string(字符串) ·运算符“+.-.*./”等操作字符串,lua会尝试讲字符串转换为数字后操作: ·字符串连接用“..”运算符 ·用“#”来计算字符串的长度(放在字符串前面) · ...

  8. PyQt4转换ui为py文件需添加如下代码才可执行

    1)转换ui为py 命令行进入ui文件所在文件夹,输入pyuic4 ui_name.ui > py_name.py即可 或新建ui2py.bat文件,写入: @echo off @cd /d & ...

  9. js数据类型以及数组字符串常用方法

    JS判断数据类型 例子: var a = "iamstring."; var b = 222; var c= [1,2,3]; var d = new Date(); var e ...

  10. sqlserver安装检测不通过 (重新启动失败)

    打开注册表,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager 删除“PendingFileRenameOperat ...