vb.net - 单击listview子项并打开窗口

时间:2013-05-23 16:27:45

标签: vb.net visual-studio-2010 listview

在做一堆谷歌搜索后我不确定这是否可行,但希望是这样。我有一个应用程序从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类型的命令,但运气不好。

我正在尝试什么?我不需要任何特殊的文本格式,只想注册点击并弹出对话框。

谢谢!

1 个答案:

答案 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