c#中怎么添加listView1_Click事件

c#中怎么添加listView1_Click事件,第1张

打开listview1的属性窗口,

点击黄色像雷电的图标,

找到click双击生成。

或者你后台手动生成

public Form1()

{

InitializeComponent()

listView1.Click += new EventHandler(listView1_Click)

}

void listView1_Click(object sender, EventArgs e)

{

throw new NotImplementedException()

}

要使用ListView控件,需要加入组件:

Microsoft Windows Common Controls 6.0

Windows资源管理器的右半部分,就是一个ListView控件。

作用

列出并列关系的对象及对象属性。

ListView控件的对象层次结构

ListView -整个控件

ColumnHeaders -标题行

ColumnHeader -标题列

ListItems -对象行集合

ListItem -对象行

ListSubItems -对象属性集合

ListSubItem -对象属性

注意:SubItems和ListSubItems的区别:SubItems是一个String数组;ListSubItems是一个集合。

属性

View:设置ListView的外观

Sorted:设置ListView中的对象集合是否排序。

SortKey:设置以第几项排序。从零开始。

SelectedItem:返回选中的对象的引用。

事件

AfterLabelEdit:编辑ListItem对象的标签时被触发。

BeforeLabelEdit:编辑ListItem对象的标签后出发。

ColumnClick:单击列标题时触发。参数中可以获得被单击的列对象。通常用于排序。

ItemClick:单击某行或某ListItem时触发。参数中可以获得被单击的ListItem对象。

方法

FindItem:搜索ListItem对象。

参数:

string:搜索字符串。

value:在ListItem的哪部分中搜索(LvwText、LvwSubItem、LvwTag);index:开始搜索的位置。

match:匹配方式。

HitTest:检索位于特定坐标处的ListItem对象。

ListView控件比前面几种控件要复杂一些,通过此控件,可将项目组成带有或不带有列标头的列,并显示伴随的图标和文本。ListView控件是由ColumnHeader和ListItem对象所组成的,其中ColumnHeader对象的个数决定了控件的列数,而ListItem对象的个数则决定了控件的行数。(图7)

ColumnHeader对象是ListView控件中包含标头文字的项目。利用ColumnHeader对象,用户可以:

▲单击对象触发ColumnClick事件并根据数据项目将项目排序。

▲拖动对象的右边框来调整列宽度。

▲在报表视图中隐藏ColumnHeader对象。

ColumnHeader对象的数目决定每个ListItem对象可包含的子项目数目。删除ColumnHeader对象后所有与列关联的子项目也将被删除,并且每个ListItem对象的子项目数组将平移以更新ColumnHeader的索引,而这将导致剩余的列标头SubItemIndex属性的改变。

ColumnHeader对象的SubItemIndex属性

该属性返回与ListView控件中ColumnHeader对象关联的子项目的索引。子项目是字符串数组,代表显示在报表视图中的ListItem对象的数据。第一列的列标头SubItemIndex属性设置为0,这是因为小图标和ListItem对象的文字总出现在第一列中,而且它们被当作ListItem对象而不是子项目。列标头数目取决于子项目数目。列标头数目总是比子项目数目多1。

在设计时可以利用属性页的“列首”选项卡将ColumnHeader对象添加到ListView控件中,在运行时则用Add方法添加。

ColumnHeader对象的Add方法

该方法的使用与前面那些控件基本相似,就不再介绍了。

ListView1.ColumnHeader.Add(index,key,text,width,alignment)

ListItem对象是指控件中的一行(不包含标头行)的所有内容。它也可包含文本和图片,但是要使用图片则必须通过Icons和SmallIcons属性引用ImageList控件。

ListItem对象的SubItems属性

返回或设置一个字符串(子项目)数组,它代表ListView控件中ListItem对象的数据。

ListItem对象可包含任意多个的关联项目数据字符串(子项目),但每个ListItem对象子项目数目必须相同。每个子项目都对应于相关的列标头,无法直接向子项目数组添加元素,只有通过ColumnHeaders的Add方法添加列标头的方法来添加子项目。

ListItem对象的Add方法

该方法添加ListItem对象到ListView控件的ListItems集合中并返回对新创建对象的引用。

它的语法如下:

ListItem1.Add(index,key,text,icon,smallIcon)

ListView控件的View属性

ListView控件可使用四种不同视图显示项目,这可以用View属性来确定。该属性返回或设置ListView控件中ListItem对象的外观。

ListView控件的SortOrder,SortKey和Sorted属性

控件中的ListItem对象可以按要求进行排序,与排序有关的属性是SortOrder,Sorted和SortKey属性。

SortOrder属性返回或设置一个值,此值决定ListView控件中的ListItem对象以升序或降序排序。

SortKey属性返回或设置一个值,此值决定ListView控件中的ListItem对象如何排序。

Sorted属性返回或设置确定ListView控件中的ListItem对象是否排序的值。

下面的代码说明了如何创建ColumnHeaders和ListItem对象,SubItemIndex和SubItem属性的使用方法以及如何排序。

Private Sub Form_load()

'确保ListView控件的view属性为报表视图。

ListView1.View=lvwReport

'添加三列。

ListView1.ColumnHeaders.Add,"Name","姓名"

ListView1.ColumnHeaders.Add,"Sex","性别"

ListView1.ColumnHeaders.Add,"Age","年龄"

'向控件添加ListItem对象。

Dim itmX As ListItem

'添加column1的名称。

Set itmX=ListView1.ListItems.Add(1,"ZL","张力")

'使用SubItemIndex将SubItem与正确的ColumnHeader关联。使用关键字("Sex")指定正确的ColumnHeader。

itmX.SubItems(ListView1.ColumnHeaders("Sex").SubItemIndex)="男"

'使用ColumnHeader关键字将SubItems字符串与

'正确的ColumnHeader关联。

itmX.SubItems(ListView1.ColumnHeaders("Age").SubItemIndex)="19"

Set itmX=ListView1.ListItems.Add(1,"LF","李芳")

itmX.SubItems(ListView1.ColumnHeaders("Sex").SubItemIndex)="男"

itmX.SubItems(ListView1.ColumnHeaders("Age").SubItemIndex)="22"

Set itmX=ListView1.ListItems.Add(1,"WW","王伟")

itmX.SubItems(ListView1.ColumnHeaders("Sex").SubItemIndex)="男"

itmX.SubItems(ListView1.ColumnHeaders("Age").SubItemIndex)="24"

End Sub

Private Sub ListView1_ColumnClick(ByVal ColumnHeader As ComctlLib.ColumnHeader)

Select Case ColumnHeader.Key

Case "Sex":ListView1.SortKey=1

ListView1.SortOrder=lvwAscending

ListView1.Sorted=True

Case "Age":ListView1.SortKey=2

ListView1.SortOrder=lvwAscending

ListView1.Sorted=True

End Select

End Sub

关键代码如下:

一、假设姓名=张三,班级=1班,成绩=85,让combo1的选项附带上班级、成绩的方法是:

Dim S as String

combo1.AddItem "张三"

S=85 &1 '把成绩和班级合并为一个数值

combo1.ItemData(combo1.NewIndex)=val(s) '保存到记录中

二、把combo1中选中的项添加到listview1(分三列)中,而且不能重复

Private Sub Combo1_Click()

Dim itm As ListItem, i As Long

For i = 1 To ListView1.ListItems.Count

If ListView1.ListItems(i).Text = Combo1.Text Then Exit Sub '保证不出现重复

Next

'追加

S = Combo1.ItemData(Combo1.ListIndex)

Set itm = ListView1.ListItems.Add(, "Row" &ListView1.ListItems.Count + 1, Combo1.Text) '得到姓名

itm.SubItems(1) = Right(S, 1) 得到‘班级

itm.SubItems(2) = Left(S, Len(S) - 1) '得到成绩

Set itm = Nothing

End Sub

三、根据listview1中的“班级(1班或者2班)”循环往下读取(间隔1秒),如果是“1”,则读取该行对应的“成绩”(text1.text=成绩分数)

Private Sub Timer1_Timer()

Dim itm As ListItem, i As Long

For i = 1 To ListView1.ListItems.Count

If ListView1.ListItems(i).SubItems(1) = "1" Then'如果是“1”

Text1.Text = ListView1.ListItems(i).SubItems(2)

ListView1.ListItems(i).Selected = True '移到该行

Exit Sub

End If

Next

End Sub


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11572995.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存