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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM