在ListView中选择项目时,更改工具提示文本



i有一个listView,其中包含文件的源地址(来自用户系统)和目标地址(两列,多元素选择= false)。

由于源地址可能很长:

d: root branch1 branch2 branch3 branch4 myfile.dat

第一列仅显示:

d: ... myfile.dat

真实路径存储在listViewItem.tag

我想拥有一个工具提示,每次用户单击(或更改)所选项目时,显示整个路径。我提出了这个:

Private Sub ListView1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListView1.SelectedIndexChanged
        For Each locItem As ListViewItem In ListView1.SelectedItems
            With ToolTip1
                .RemoveAll()
                .SetToolTip(ListView1, locItem.Tag)
            End With
        Next
    End Sub

现在,工具提示确实会更改,但它总是跳过一个选择。那就是:

  • 选择项目1:工具提示正确显示

  • 选择项目2:工具提示不显示

  • 选择项目3:工具提示正确显示

  • 选择项目5:工具提示不显示

  • 选择项目2:Tooltip正确显示(选择返回第2项未显示第一次的项目)

有什么想法吗?

ps:我正在使用Visual Studio社区2015

pps:我还需要将视图属性设置为view.details(要显示列和标题),因此设置ShowItemToolTip = True不起作用

当前解决方案

我找到了解决方法,破坏和重新创建了工具提示控制。现在,该工具提示在每个项目上都正确显示:

  Private myTooltip As ToolTip
    Private Sub ListView1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListView1.SelectedIndexChanged
        If myTooltip IsNot Nothing Then myTooltip.Dispose()
        myTooltip = New ToolTip
        For Each locItem As ListViewItem In ListView1.SelectedItems
            myTooltip.SetToolTip(ListView1, locItem.Tag)
        Next
    End Sub

我仍然对第一种方法中的跳过感到困惑。

listView具有一个名为Showitemtooltips(https://msdn.microsoft.com/en-us/library/system.windows.forms.listview.showitemtooltips(V=VS.110)的属性.aspx)。您可以将其设置为True,然后将ListViewItems的ToolPtext属性设置为长路径。

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
    ListView1.ShowItemToolTips = True
    Dim lvi1 As New ListViewItem With {.Text = "d:..myFile.dat", .Tag = "d:myLongPathmyFile.dat", .ToolTipText = .Tag}
    Dim lvi2 As New ListViewItem With {.Text = "d:..myFile2.dat", .Tag = "d:myLongPathmyFile2.dat", .ToolTipText = .Tag}
    ListView1.Items.Add(lvi1)
    ListView1.Items.Add(lvi2)
End Sub

最新更新