在做一堆谷歌搜索后我不确定这是否可行,但希望是这样。我有一个应用程序从MySQL数据库中提取信息列表并填充列表视图(不幸的是,我此时无法更改为数据网格。)我的任务是做到这一点,以便在点击时在某个列中,将打开一个窗口,并根据单击的行的ID从同一数据库中检索另一组结果。
列表视图按原样创建:
Do While result.Read()
Dim siteid = (result.Item("idsite").ToString())
Dim sitename = (result.Item("name").ToString())
Dim last_import_date = (result.Item("import_finished").ToString())
Dim last_import_file = (result.Item("file_name").ToString())
Dim last_line = (result.Item("last_line").ToString())
Dim status = (result.Item("status").ToString())
Dim lv As ListViewItem = ListView1.Items.Add(siteid)
lv.SubItems.Add(sitename)
lv.SubItems.Add(last_import_date)
lv.SubItems.Add(last_import_file)
lv.SubItems.Add(last_line)
lv.SubItems.Add(status)
Loop
所以我最好点击“Last_import_file”并打开窗口。我尝试过一堆ItemClicked类型的命令,但运气不好。
我正在尝试什么?我不需要任何特殊的文本格式,只想注册点击并弹出对话框。
谢谢!
答案 0 :(得分:4)
是的,这是可能的。要在Listview中执行此操作,它比DataGridView要复杂一些。您需要使用ListViewHitTestInfo
类。使用列表视图的MouseDown
事件,请使用以下代码:
Private Sub ListView1_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles ListView1.MouseDown
Dim info As ListViewHitTestInfo = ListView1.HitTest(e.X, e.Y)
MsgBox(info.Location.ToString())
If Not IsNothing(info.SubItem) Then
'info will contain the information of the clicked listview column. You can then go through it's subitems for more information, if any.
End If
End Sub