1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 【转载】C# ListView控件的一些用法

【转载】C# ListView控件的一些用法

时间:2022-03-23 18:17:02

相关推荐

【转载】C# ListView控件的一些用法

本文系转载,原文链接/ca/09/586362553.htm

**

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

**

亮术网 -03-07 本网原创

DataGridView控件功能十分强大,显示表格也方便,但性能就没有那么高;ListView控件功能没那么强大,显示表格也要多写代码,但性能相对高一些。开发过程中,可根据需要选用;对于显示表格来说,用 ListView控件也不难,以下是两个具体实例。

一、C# Winform ListView 生成表格

1、拉一个 ListView控件到 Form1 窗口中,双击 Form1 窗口打开后台代码文件。

2、显示表格代码(固定列宽度):

using System;using System.Collections.Generic;using ponentModel;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所示:

listView显示表格

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z5TWbdMy-1615943108366)(/lsfile/computer//9/du4o72v4a783551.jpg#pic_center)]

图1

3、自适应列宽度代码如下:

using System;using System.Collections.Generic;using ponentModel;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所示:

listView表格自适应宽度

图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所示:

添加复选框(Winform listview checkbox)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UaWj4fS8-1615943148422)(/lsfile/computer//3/yhuu1h8hp264134.gif#pic_center)]

图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所示:

Winform listview 选中颜色和字体修改以突出显示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k1FGwN9G-1615943164534)(/lsfile/computer//3/4mhidd5lp900177.gif#pic_center)]

图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所示:C# Winform ListView 鼠标滑过背景变色图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 测试,可直接复到文件运行看效果。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。