介绍
listView一般用于展示数据,有多种视图显示方式,如果要显示成表格,需要设置视图
应用场景
文件管理器,显示各钟文件图标,用的就是这个控件,适合显示图片
属性
常用代码(说明见下面):
selectListView.View = View.Details;
selectListView.FullRowSelect = true;
selectListView.CheckBoxes = true;
selectListView.GridLines = true;
View
获取或设置项在控件中的显示方式
LargeIcon:每个项都显示为一个最大化图标,在它的下面有一个标签;
SmallIcon:每个项都显示为一个小图标,在它的右边带一个标签;
List:每个项都显示为一个小图标,在它的右边带一个标签。各项排列在列中,没有列标头;
Details:表格,可以显示任意的列,但只有第一列可以包含一个小图标和标签,其它的列项只能显示文字信息,有列表头;
Tile:每个项都显示为一个完整大小的图标,在它的右边带项标签和子项信息。(只有Windows XP 和 Windows Server 2003 系列支持)
HeaderStyle
获取或设置列标头样式,有三种样式供选择:
Clickable:列标头的作用类似于按钮,单击时可以执行操作(例如排序);
NonClickable:列标头不响应鼠标单击;
None:不显示列标头。
当 HeaderStyle 的样式为 Clickable时,就必须和 ColumnClick 配合使用,即当用户在列表视图控件中单击列标头时发生;
用户在点击表头时一般用于排序,所以,与之相关的属性有:
Soritng:对列表视图的项进行排序。(默认为None)
Ascending:项按递增顺序排序。
Descending:项按递减顺序排序。
None:项未排序。
CheckBoxes
设置控件中各项的旁边是否显示复选框(默认为False),当 CheckBoxes 为 True 时,便可以使用 CheckedItems 来获取控件中当前复选框选中的项;
LabelEdit
设置用户是否可以编辑控件中项的标签,对于 Detail 视图,只能编辑行第一列的内容(默认为false);
FullRowSelect
使用 Details 视图时,默认 只能选第一列单元格
该属性设置是否行选择模式(默认为false)
groupByListView.FullRowSelect = true;
GridLines
使用 Details 视图时,默认 没有网格线
该属性设置行和列之间是否显示网格线。(默认为false)
groupByListView.GridLines = true;
AllowColumnReorder
设置是否可拖动列标头来对改变列的顺序。(默认为false)提示:只有在Details视图该属性才有意义。
MultiSelect
设置是否可以选择多个项。(默认为false)
SelectedItems
获取在控件中选定的项。
CheckedItems
当 CheckBoxes 为 true 时,获取勾选的项:
返回集合,该集是勾选项的项:
groupByListView.CheckedItems
返回的总数
groupByListView.CheckedItems.Count
返回集合,该集合是勾选项的索引:
groupByListView.CheckedIndices
打印勾选的项:
foreach(ListViewItem item in groupByListView.CheckedItems)
{
System.Diagnostics.Debug.WriteLine(item.Text);
}
打印勾选项的索引:
foreach (int i in groupByListView.CheckedIndices)
{
System.Diagnostics.Debug.WriteLine(i);
}
使用
https://blog.csdn.net/u013180863/article/details/53815362
https://www.cnblogs.com/wuxinwuxin/p/8168975.html
https://blog.csdn.net/u013180863/article/details/53815362
添加列名
简单方式
groupByListView.Columns.Add("性别", 100);
高级方式
ColumnHeader c1 = new ColumnHeader();
c1.Width = 100;
c1.Text = "姓名";
groupByListView.Columns.Add(c1);
添加行
方式一
//创建对象,同时设置第一列的值
ListViewItem li = new ListViewItem("李雷");
//设置第二列
li.SubItems.Add("男");
//添加
groupByListView.Items.Add(li);
方式二
//创建对象
ListViewItem li2 = new ListViewItem();
// 设置第一列
li2.Text = "韩梅梅";
//设置第二列
li2.SubItems.Add("女");
//添加
groupByListView.Items.Add(li2);
遍历
foreach (ListViewItem item in this.listView1.Items)
{
for (int i = 0; i < item.SubItems.Count; i++)
{
MessageBox.Show(item.SubItems[i].Text);
}
}
事件
勾选复选框事件
private void groupByListView_ItemCheck(object sender, ItemCheckEventArgs e)
{
// e.CurrentValue是勾选前的值,e.NewValue是勾选后的值
System.Diagnostics.Debug.WriteLine("ItemCheck-" + e.CurrentValue+","+e.NewValue+","+e.Index);
// 勾选
if(e.NewValue == CheckState.Checked)
{
}
else // 取消勾选
{
}
}