2

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

我正在尝试的可能吗?我不需要任何特殊的文本格式,只想注册单击并弹出打开对话框。

谢谢!

4

1 回答 1

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
于 2013-05-23T16:38:56.993 回答