admin健康百科 2023-04-06 22:31:26 C# ListView控件顯示表格(自適應寬度),添加 Checkbox,刪除選擇項,選中顔色和鼠標滑過背景變色_winform listview checkbox_jinxueHou專欄的博客-CSDN博客C# ListView控件顯示表格(自適應寬度),添加 Checkbox,刪除選擇項,選中顔色和鼠標滑過背景變色_winform listviewcheckbox_jinxueHou專欄的博客-CSDN博客 行走在理想邊緣亮術網 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 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 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 測試,可直接複到文件運行看傚果。本站是提供個人知識琯理的網絡存儲空間,所有內容均由用戶發佈,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵擧報。 listview LV listviewitem 生活常識_百科知識_各類知識大全»C# ListView控件顯示表格(自適應寬度),添加 Checkbox,刪除選擇項,選中顔色和鼠標滑過背景變色_winform listview checkbox_jinxueHou專欄的博客-CSDN博客
0條評論