摘要:本文主要介绍了ListView在C#中的用法,通过示例代码详细介绍,对大家的学习或工作有一定的参考价值。有需要的朋友下面和边肖一起学习。
一、ListView类
1、常用的基本属性:
(1)FullRowSelect:设置是否选择行选择模式。(默认值为false)提示:该属性仅在详细视图中有意义。
网格线:设置行与列之间是否显示网格线。(默认值为false)提示:该属性仅在详细视图中有意义。
(3) AllowColumnOrder:设置是否可以拖动列头来改变列的顺序。(默认值为false)提示:该属性仅在详细视图中有意义。
(4)View:获取或设置控件中各项的显示方式,包括Details、LargeIcon、List、SmallIcon、Tile(默认为LargeIcon)。
(5)多选:设置是否可以多选。(默认值为false)
(6)HeaderStyle:获取或设置列标题样式。
可点击:列标题就像按钮一样,当点击时,它们可以执行操作(比如排序)。
不可点击:列标题不响应鼠标点击。
无:不显示列标题。
(7)LabelEdit:设置用户是否可以编辑控件中项的标签。对于详细视图,只能编辑该行第一列的内容。(默认值为false)
(8)复选框:设置是否在控件中的每个项目旁边显示复选框。(默认值为false)
(9)LargeImageList:一组大图标。提示:仅在LargeIcon视图中使用。
(10)SmallImageList:一组小图标。提示:仅用于小图标视图。
(11)StateImageList:图像掩码。这些图像遮罩可用作LargeImageList和SmallImageList图像的覆盖图,可用于指示应用程序定义的项目状态。(暂时不太懂)
(12)SelectedItems:获取控件中选中的项目。
(13)CheckedItems:获取控件中当前复选框选中的项目。
(14)排序:对列表视图中的项目进行排序。(默认为无)
升序:项目按升序排序。
降序:项目按降序排序。
无:不对项目进行排序。
(15)可滚动:设置当没有足够的空间显示所有项目时是否显示滚动条。(默认为真)
(16)HoverSelection:设置当鼠标指针悬停在某个项目上时,是否自动选择该项目。(默认值为false)
(17)HotTracking:设置当鼠标指针经过项目时,项目的外观是否变成超链接。(默认值为false)
(18)HideSelection:设置当控件没有焦点时,选中的项目是否仍然高亮显示。(默认值为false)
(19)ShowGroups:设置是否分组显示项目。(默认为假);
(20)分组:设置分组对象的集合。
(21)TopItem:获取或设置控件中的第一个可见项,可用于定位。(效果类似于EnsureVisible方法)
2、常用方法:
(1)BeginUpdate:避免在调用EndUpdate方法之前描述控件。在插入大量数据时,可以有效避免控件的闪烁,大大提高速度。
(2)end update:begin update方法挂起描述后,继续描述列表视图控件。(结束更新)
(3)EnsureVisible:列表视图滚动到指定索引项的选项行。(效果类似于TopItem属性)
(4) FindeditemWithText:查找以给定文本值开头的第一个ListViewItem。
(5)FindNearestItem:根据指定的搜索方向,从给定点开始搜索下一项。提示:该方法只能在LargeIcon或SmallIcon视图中使用。
3、常用事件:
(1)AfterLabelEdit:在用户完成编辑项目的标签时发生,并且LabelEdit属性需要为true。
(2)BeforeLabelEdit:当用户开始编辑项目的标签时发生。
(3)ColumnClick:当用户单击列表视图控件中的列标题时发生。
二、ListView的五种视图:
1.LargeIcon:每个项目都显示为最大化的图标,下面有一个标签。(效果见下图)
2.SmallIcon:每个项目都显示为一个小图标,右边有一个标签。(效果见下图)
3、列表:每个项都显示为一个小图标,在它的右边带一个标签。各项排列在列中,没有列标头。(效果见下图)
4、细节:可以显示任意的列,但只有第一列可以包含一个小图标和标签,其它的列项只能显示文字信息,有列表头。(效果见下图)
5、瓷砖:每个项都显示为一个完整大小的图标,在它的右边带项标签和子项信息。(只有Windows XP和Windows Server 2003系列支持)
细节视图:
这个。列表视图1。小imagelist=this。imagelist 1;//将列表视图的图标集与图像列表一绑定
(1)列表头创建(记得,需要先创建列表头)
列标题ch=新列标题();
栗色Text='列标题1';//设置列标题
栗色宽度=120;//设置列宽度
栗色TextAlign=HorizontalAlignment .左;//设置列的对齐方式
这个。列表视图1。列。添加(ch);//将列头添加到列表视图控件。
或者
this.listView1.Columns.Add('列标题1 ',120,水平对齐。左);//一步添加
(2)添加数据项
这个。列表视图1。开始更新();//数据更新,用户界面暂时挂起,直到最终更新绘制控件,可以有效避免闪烁并大大提高加载速度
for(int I=0;i 10i ) //添加10行数据
{
listview item lvi=new listview item();
路易威登图像索引=I;//通过与图像列表绑定,显示图像列表中第我项图标
路易威登text=' subitem ' I;
路易威登。子项。添加('第2列,第我行');
路易威登。子项。添加('第3列,第我行');
这个。列表视图1。项目。add(lvi);
}
这个。列表视图1。结束更新();//结束数据处理,用户界面界面一次性绘制。
(3)显示项
foreach(这个。列表视图1。项目中的ListViewItem项)
{
//处理行
for(int I=0;一项。子项。计数;我)
{
//处理列
消息框.显示(项目。分项目[我].正文);
}
}
(4)移除某项
foreach(列表视图1中的ListViewItem lvi .SelectedItems) //选中项遍历
{
列表视图1。项目。移除At(lvi .指数);//按索引移除
//listView1 .项目。移除(lvi);//按项移除
}
(5)行高设置(利用图像列表实现)
ImageList img list=new ImageList();
imgList .图像大小=新大小(1,20);//设置行高20 //分别是宽和高
列表视图1。SmallImageList=imgList//这里设置列表视图的SmallImageList,用imgList将其撑大
(6)清空
这个。列表视图1。clear();//从控件中移除所有项和列(包括列表头)。
这个。列表视图1。项目。clear();//只移除所有的项。
运行效果:
大图标视图:
this.listView1.View=View .大型图标;
这个。列表视图1。大imagelist=this。imagelist 2;
这个。列表视图1。开始更新();
for(int I=0;i 10我)
{
listview item lvi=new listview item();
路易威登图像索引=I;
路易威登. text=' item ' I;
这个。列表视图1。项目。add(lvi);
}
这个。列表视图1。结束更新();
运行效果:
小图标视图:
this.listView1.View=View .小图标
这个。列表视图1。小imagelist=this。imagelist 1;
这个。列表视图1。开始更新();
for(int I=0;i 10我)
{
listview item lvi=new listview item();
路易威登图像索引=I;
路易威登. text=' item ' I;
这个。列表视图1。项目。add(lvi);
}
这个。列表视图1。结束更新();
运行效果:
列表视图:
this.listView1.View=View .列表;
这个。列表视图1。小imagelist=this。imagelist 1;
这个。列表视图1。开始更新();
for(int I=0;i 10我)
{
listview item lvi=new listview item();
路易威登图像索引=I;
路易威登. text=' item ' I;
这个。列表视图1。项目。add(lvi);
}
这个。列表视图1。结束更新();
运行效果:
三、其它应用
1、分组:
listview group man _ lvg=new listview group();//创建男生分组
man_lvg .Header='男生;//设置组的标题。
//man_lvg .Name=' man//设置组的名称。
man_lvg .页眉对齐=水平对齐.左;//设置组标题文本的对齐方式。(默认为左)
listview group women _ lvg=new listview group();//创建女生分组
女人_lvg .Header='女生;
//女人_lvg .Name='女人
女人_lvg。header alignment=horizontal alignment。居中;//组标题居中对齐。
this . listview 1 . groups . add(man _ lvg);//将男孩分组添加到列表视图中
this . listview 1 . groups . add(women _ lvg);//将男孩分组添加到列表视图中
this . listview 1 . show groups=true;//记住将ShowGroups属性设置为true(默认为false),否则不会显示分组。
for(int I=0;i5;我)
{
listview item lvi=new listview item();
路易威登。image index=I;
路易威登。text=' item ' I;
路易威登。ForeColor=颜色。蓝色;//设置行颜色
路易威登。SubItems.Add('列2,行' I ');
路易威登。SubItems.Add('列3,行' I ');
man_lvg。items . Add(lvi);//在组中添加孩子
//或者lvi。Group=man _ lvg//在组中添加孩子
this . listview 1 . items . add(lvi);
}
操作效果:
2.查找文本(只能找到与前缀匹配的文本,并且只能找到第一个匹配项):
listview item found item=this . listview 1 . finditemwithtext(this . textbox 1 . text,true,0);//参数1:要查找的文本;参数2:是否搜索子项;3:开始找位置。
if (foundItem!=空)
{
this . listview 1 . topitem=found item;//导航到此项
foundItem。ForeColor=颜色。红色;
}
关于在C#中使用ListView的这篇文章就到这里了。有关C #中listview的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。