【问题标题】:vb.net - click on listview subitem and open windowvb.net - 单击列表视图子项并打开窗口
【发布时间】:2013-05-23 16:27:45
【问题描述】:

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

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

谢谢!

【问题讨论】:

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


【解决方案1】:

是的,这是可能的。要在 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

【讨论】:

  • 完美!它有效,我可以得到我点击的项目,但现在有办法检查子项目的名称吗?我正在尝试 MessageBox.Show(info.SubItem.Name.ToString),但得到一个空白。如果我使用 info.SubItem.Text,我会得到值,但现在我想看看我是否可以限制单击的列,并且该列中每一行的文本值都会改变
  • @J_D CoumnHeader 类的 Name 属性不是设计时属性。 ColumnHeader的Name属性值在运行时返回空字符串的原因是该属性在表单的InitializeComponent方法中根本没有序列化。这似乎是 ColumnHeader 类的设计器的限制,它不会序列化 ColumnHeader 的 Name 属性的值。如果您没有在“标签”属性中存储任何内容,请将您的姓名存储在其中。希望对您有所帮助。
  • 标签也不起作用,但它很酷。我只是要告诉它忽略第一列(有一个复选框),如果他们点击其他任何地方,它将打开新窗口。非常感谢您的帮助!
猜你喜欢
  • 2012-02-07
  • 2018-01-23
  • 1970-01-01
  • 2018-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-14
  • 1970-01-01
相关资源
最近更新 更多