本文系转载,原文链接http://www.liangshunet.com/ca/201309/586362553.htm

**

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

**
亮术网 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所示:

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

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

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)(http://www.liangshunet.com/lsfile/computer/2020/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)(http://www.liangshunet.com/lsfile/computer/2020/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 2019 测试,可直接复到文件运行看效果。

【转载】C# ListView控件的一些用法相关推荐

  1. C#ListView控件的相关用法

    private void LoadData(){string sql = @"select 编号,姓名,性别,住址 from 学生表";DataTable dt = DBUtil. ...

  2. ListView控件使用简介(转载)

    ListView控件使用简介 ListView控件在各类程序中,具有数据显示直观,操作方便的特点.所以使用率极高,但控件的各类参数众多,很多初学者不易掌握,在此列举该控件的一些常用方法,属性,希望对初 ...

  3. 如何:在 Windows 窗体 ListView 控件中启用平铺视图 【转载】

    本文转载自http://msdn.microsoft.com/zh-cn/library/s8z85th0(VS.80).aspx 借助于 ListView 控件的平铺视图功能,可以在图形信息和文本信 ...

  4. C++Builder中ListView控件用法和示例总结整理

    示例1(此示例转自ccrun 妖哥): __fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner) {// 切换ListView的显示风格为详 ...

  5. Android使用ListView控件问题

    Android使用ListView控件问题: The application has stopped unexpectedly, please try again. 开发环境:android 1.6 ...

  6. ASP.NET ListView控件基本操作

    1.前台代码 View Code 1 <asp:ListView ID="lvDepartment" runat="server" DataKeyName ...

  7. 【转】 ASP.NET 3.5中使用新的ListView控件

    ASP.NET中新的ListView控件为显示和CURD数据库操作提供了基于模板的布局,使之成为一项极好的方式,建立以数据为中心的Web应用程序. 当你编写以用户为中心的应用程序时,总需要某种形式的数 ...

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

    本文转载自:http://www.liangshunet.com/ca/201309/586362553.htm 亮术网 2020-03-07 本网原创 DataGridView控件功能十分强大,显示 ...

  9. ListView控件学习系列2-编辑ListView(Edit,Update,Insert,Delete)

    目录: ListView控件学习系列1-了解ListView控件 ListView控件学习系列2-编辑ListView ListView控件学习系列3-ListView选择,排序,分页 ListVie ...

  10. VB.net实现从ListView控件中异地获取文本内容源代码

    对于一些VB6工程代码来说,需要完成从VB到VB.net的转换,在转换过程中需要注意很多内容,利用VB.net的直接转换功能很少能完全成功,需要我们付出很大的努力. 下面的VB.net代码实现从其他应 ...

最新文章

  1. DateEdit如果开启Vista模式并显示日期+时间模式
  2. C语言实用算法系列之冒泡排序、sizeof与strlen的区别
  3. spring boot: 支持jsp,支持freemarker
  4. java XML 通过BeanUtils的population为对象赋值 根据用户选择进行dom4j解析
  5. 孙燕姿 -《Stefanie》
  6. 软件工程(吕云翔第二版)部分简答题答案
  7. 【H3CTE认证和HCIE认证一样吗?】
  8. 哲学家就餐问题及其实现
  9. 转专业申请麦吉尔大学计算机,我在麦吉尔大学学习数学专业……
  10. DevExpress 单元格的设置(可设字体、字号、前景色、背景色)
  11. 安装完Tensorflow却找不到指定模块
  12. 网络安全实验1 Sniffer Pro网络分析器应用实验
  13. 单片机看门狗c语言,单片机看门狗程序
  14. 《沉默的大多数》阅读笔记优秀范文2200字
  15. 明朝那些事 当年明月
  16. 产品总监晋升之路(1):选育育留之产品经理胜任力模型
  17. 乘法口诀表python_如何用python编写乘法口诀表
  18. mysql3819错误,MySQL 8.0新特性 ― 检查性约束的使用简介
  19. 【期末复习】网络空间安全导论
  20. yunfile php,yunfile解析出真实地址,却不能下载,访问会出错...

热门文章

  1. CMMI质量管理体系——软件测试缺陷管理
  2. 软件工程硕士论文撰写指导
  3. wincc怎么做数据库_WINCC与数据库连接
  4. Junit + Mockito 使用资料整理
  5. java gb28181网关_视频网关GB28181协议转换解决方案
  6. nexus本地maven仓库部署及下载
  7. 结构风荷载理论与matlab计算公式,结构风荷载理论与MATLAB计算
  8. python中聚类和分类的区别_聚类与分类有什么区别?
  9. 如何macOS 上优雅的使用 Gaussian 09 与GaussView 6
  10. 安防CVR存储系统设计解决方案