日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# ListView控件显示表格(自适应宽度),添加 Checkbox,删除选择项,选中颜色和鼠标滑过背景变色

發布時間:2025/4/16 C# 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# ListView控件显示表格(自适应宽度),添加 Checkbox,删除选择项,选中颜色和鼠标滑过背景变色 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文轉載自:http://www.liangshunet.com/ca/201309/586362553.htm

亮術網 2020-03-07 本網原創

DataGridView控件功能十分強大,顯示表格也方便,但性能就沒有那么高;ListView控件功能沒那么強大,顯示表格也要多寫代碼,但性能相對高一些。開發過程中,可根據需要選用;對于顯示表格來說,用 ListView控件也不難,以下是兩個具體實例。

?

一、C# Winform ListView 生成表格

1、拉一個 ListView控件到 Form1 窗口中,雙擊 Form1 窗口打開后臺代碼文件。

?

2、顯示表格代碼(固定列寬度):

using?System;
??using?System.Collections.Generic;
??using?System.ComponentModel;
??using?System.Data;
??using?System.Drawing;
??using?System.Text;
??using?System.Windows.Forms;

namespace?ShowTable
??{
????public partial class?Form1?:?Form
????{
??????public?Form1()
??????{
????????InitializeComponent();
??????}

????private void?Form1_Load(object?sender,?EventArgs?e)
??????{
????????ShowTableWithListview();
??????}

?

????private void?ShowTableWithListview()
??????{
????????listView1.GridLines =?true;//表格是否顯示網格線
????????listView1.FullRowSelect =?true;//是否選中整行

??????listView1.View =?View.Details;//設置顯示方式
????????listView1.Scrollable =?true;//是否自動顯示滾動條
????????listView1.MultiSelect =?false;//是否可以選擇多行

??????//添加表頭(列)
????????listView1.Columns.Add("產品名稱", 160,?HorizontalAlignment.Center);
????????listView1.Columns.Add("產品型號", 100,?HorizontalAlignment.Center);
????????listView1.Columns.Add("價格", 100,?HorizontalAlignment.Center);
????????listView1.Columns.Add("數量", 100,?HorizontalAlignment.Center);

??????//添加表格內容
????????for?(int?i?= 0;?i?< 6;?i++)
????????{
??????????ListViewItem?item?=?new?ListViewItem();
??????????item.SubItems.Clear();

????????item.SubItems[0].Text =?"產品"?+?i.ToString();
??????????item.SubItems.Add(i.ToString());
??????????item.SubItems.Add((i?+ 7).ToString());
??????????item.SubItems.Add((i?*?i).ToString());
??????????listView1.Items.Add(item);
????????}
??????}
????}
??}

顯示表格效果如圖1所示:

圖1

?

3、自適應列寬度代碼如下:

using?System;
??using?System.Collections.Generic;
??using?System.ComponentModel;
??using?System.Data;
??using?System.Drawing;
??using?System.Text;
??using?System.Windows.Forms;

namespace?ShowTable
??{
????public partial class?Form1?:?Form
????{
??????public?Form1()
??????{
????????InitializeComponent();
??????}

????private void?Form1_Load(object?sender,?EventArgs?e)
??????{
?????????ShowTableAdaptiveWidthColumn?();
??????}

????private void?ShowTableAdaptiveWidthColumn()
??????{
????????listView1.GridLines =?true;//表格是否顯示網格線
????????listView1.FullRowSelect =?true;//是否選中整行

??????listView1.View =?View.Details;//設置顯示方式
????????listView1.Scrollable =?true;//是否自動顯示滾動條
????????listView1.MultiSelect =?false;//是否可以選擇多行

??????//添加表頭(列)
????????listView1.Columns.Add("ProductName",?"產品名稱");
????????listView1.Columns.Add("SN",?"產品型號");
????????listView1.Columns.Add("Price",?"價格");
????????listView1.Columns.Add("Number",?"數量");

??????//添加表格內容
????????for?(int?i?= 0;?i?< 3;?i++)
????????{
??????????ListViewItem?item?=?new?ListViewItem();
??????????item.SubItems.Clear();

????????item.SubItems[0].Text =?"產品"?+?i.ToString();
??????????item.SubItems.Add(i.ToString());
??????????item.SubItems.Add((i?+ 7).ToString());
??????????item.SubItems.Add((i?*?i).ToString());
??????????listView1.Items.Add(item);
????????}

??????listView1.Columns["ProductName"].Width = -1;//根據內容設置寬度
????????listView1.Columns["SN"].Width = -2;//根據標題設置寬度

??????listView1.Columns["Price"].Width = -2;
????????listView1.Columns["Number"].Width = -2;
??????}
????}
??}

效果圖如圖2所示:

圖2

?

?

二、C# Winform ListView 表格功能擴展

1、添加復選框(Winform listview checkbox)

需要 ListView 的 CheckBoxes 和 MultiSelect 屬性設置為 True。再拖一個 CheckBox 控件到 ListView 下面,打開“屬性”窗口(右鍵 CheckBox,然后選擇“屬性”),把它的 Text 屬性改為“全選”;選擇“事件”選項卡,在 CheckedChanged 右邊添加?CbAll_CheckedChanged,按回車,添加選擇改變事件。

方法一:

private void?SelectAllCheckBoxes(ListView?lv,?bool?currVal)
??{
????for?(int?i?= 0;?i?<?lv.Items.Count;?i++)
??????lv.Items[i].Checked =?currVal;
??}

?

方法二:

private void?SelectAllCheckBoxes(ListView?lv,?bool?currVal)
??{
????foreach?(ListViewItem?item?in?lv.Items)
??????item.Checked =?currVal;
??}

調用:

private void?CbAll_CheckedChanged(object?sender,?EventArgs?e)
??{
????SelectAllCheckBoxes(listView1,?cbAll.Checked);
??}

效果圖如圖3所示:

?

圖3

?

2、Winform listview 刪除選擇項

拖一個 Label 控件到 ListView 下面“全選”右邊;打開“屬性”窗口(右鍵 listView1,選擇“屬性”),選擇“事件”選項卡,在 MouseClick 右邊添加 lblDel_MouseClick 事件,再添加如下代碼:

private void?lblDel_MouseClick(object?sender,?MouseEventArgs?e)
??{
????foreach?(ListViewItem?item?in?listView1.Items)
????{
??????if?(item.Checked)
??????? ?item.Remove();
????}
??}

?

3、Winform listview 選中顏色和字體修改以突出顯示

打開“屬性”窗口(右鍵 listView1,選擇“屬性”),選擇“事件”選項卡,在 CheckedChanged 右邊添加 listView1_ItemSelectionChanged 事件,再添加如下代碼:

private void?listView1_ItemSelectionChanged(object?sender,?ListViewItemSelectionChangedEventArgs?e)
??{
????listView1.FullRowSelect =?true;

??if?(this.listView1.SelectedItems.Count > 0)
????{
??????//清除原有前景顏色
??????foreach?(ListViewItem?lvi?in?listView1.Items)
??????lvi.ForeColor =?Color.Black;

????//清除原有背景顏色和字體
??????foreach?(ListViewItem?lvi?in?listView1.Items)
??????{
????????lvi.BackColor =?Color.White;
????????Font?font?=?new?Font(Control.DefaultFont,?FontStyle.Regular);
????????lvi.Font?=?font;
??????}

????listView1.SelectedItems[0].SubItems[0].ForeColor =?Color.OrangeRed;
??????Font?newFont?=?new?Font(Control.DefaultFont,?FontStyle.Bold);?//加粗選中行字體
??????listView1.SelectedItems[0].SubItems[0].Font?=?newFont;

????listView1.SelectedItems[0].BackColor =?Color.FromArgb(5, 206, 249, 221);//設置選中行背景顏色
??????listView1.SelectedItems[0].Selected =?false;
????}
??}

效果圖如圖4所示:

圖4

?

4、ListView 鼠標滑過背景變色

(1)響應快的方法

打開“屬性”窗口(右鍵 listView1,選擇“屬性”),選擇“事件”選項卡,在 MouseMove 右邊添加 listView1_MouseMove 事件,再添加如下代碼:

private void?listView1_MouseMove(object?sender,?MouseEventArgs?e)
??{
????ListView?lv?= (ListView)sender;
????ListViewItem?oldItem?=?null;
????if?(lv.Tag !=?null)
??????oldItem?= (ListViewItem)lv.Tag;

??ListViewItem?curItem?=?lv.GetItemAt(e.X,?e.Y);//獲取鼠標所在的項
????if?(curItem?!=?null)
????{
??????// 還原鼠標上次所在項的背景顏色
??????if?(oldItem?!=?null?&&?oldItem?!=?curItem)
????????oldItem.BackColor =?lv.BackColor;

????curItem.BackColor =?Color.LightGreen;//設置當前項的背景顏色
??????lv.Tag =?curItem;
????}
????else
????{
??????if?(oldItem?!=?null?&&?oldItem.BackColor !=?lv.BackColor)
????????oldItem.BackColor =?lv.BackColor;
????}
??}

效果圖如圖5所示:

圖5

?

(2)響應慢的方法

同樣在 ItemMouseHover 右邊添加?listView1_ItemMouseHover?事件,再添加如下代碼:

ListViewItem?lastSelectedItem?=?null;
??private void?listView1_ItemMouseHover(object?sender,?ListViewItemMouseHoverEventArgs?e)
??{
????if?(lastSelectedItem?!=?null)
??????lastSelectedItem.BackColor =?Color.White;
??? ??
????e.Item.BackColor =?Color.LightGreen;
????lastSelectedItem?=?e.Item;
??}

?

5、ListView 行高設置

設置方法請看《C# listview行高設置完整實例》一文,里面有詳細介紹。

以上代碼通過 Visual Studio 2019 測試,可直接復到文件運行看效果。

總結

以上是生活随笔為你收集整理的C# ListView控件显示表格(自适应宽度),添加 Checkbox,删除选择项,选中颜色和鼠标滑过背景变色的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。