C# listview展示表格格式

  有时候我们需要展示表格格式的数据,首先想到的是用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 = "1";
            string clientIp = "10.10.10.80";

            bool findFlag = false;  //默认为当前epc不存在列表中
            int itemIdx = 0;    //listview索引

            foreach (KeyValuePair<int, string> item in dicInventoryData)
            {
                if (item.Value.Contains(epc))
                {
                    findFlag = true;
                    itemIdx = item.Key;
                }
            }

            if (findFlag)   //存在,更新数据
            {
                // 更新次数
                listInventoryData.Items[itemIdx].SubItems[4].Text = Int32.Parse(listInventoryData.Items[itemIdx].SubItems[4].Text) + 1 + "";
                //更新时间
                listInventoryData.Items[itemIdx].SubItems[5].Text = dateTime;

                // 取天线信息
                string strAntennaPorts = listInventoryData.Items[itemIdx].SubItems[3].Text;
                if (!strAntennaPorts.Contains(antPort))
                {
                    // 更新天线信息
                    strAntennaPorts += "," + antPort;
                    listInventoryData.Items[itemIdx].SubItems[3].Text = strAntennaPorts;
                }
            }
            else //不存在,添加数据
            {
                ListViewItem item = new ListViewItem();
                //序号
                item.Text = (listInventoryData.Items.Count + 1) + "";
                //客户端
                item.SubItems.Add(clientIp);
                //epc
                item.SubItems.Add(epc);
                //天线号
                item.SubItems.Add(antPort);
                // 次数
                item.SubItems.Add("1");
                //时间
                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

posted @ 2019-03-25 22:00  没事儿写个bug  阅读(13441)  评论(0编辑  收藏  举报