DataGridView工具提示显示,即使表单没有聚焦

时间:2016-05-18 10:39:20

标签: vb.net datagridview tooltip

给定:我有一个基于DataGridView列表的应用程序,它使用外部工具提示(禁用默认的dgv工具提示)来显示鼠标悬停时特定列的大内容。

问题

当表单本身不在焦点上时,它总是在鼠标悬停时显示工具提示。

方案

  • 我在非全屏模式下同时运行我的应用程序+ Firefox。
  • 使用我的应用程序,我得到了我想要的工具提示。
  • 然后我切换到覆盖Firefox的一半。
  • 虽然我的应用程序支持Firefox,但它仍然在Firefox上显示工具提示,而表单本身就是它的背后。

场景#2:

  • 我的应用程序正在向我显示工具提示。
  • 我决定通过按键盘上的del-button删除该Gridview条目,这会打开yes / no-msgbox。
  • 工具提示显示在msgbox的顶部,这使我无法使用鼠标的msgbox按钮

设置

enter image description here

代码:

Private Sub gridView_CellMouseEnter(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellMouseEnter
        If e.ColumnIndex = DirectCast(sender, DataGridView).Columns.Count - 1 And Not e.RowIndex = -1 Then
            ToolTip1.SetToolTip(sender, sender.rows(e.RowIndex).cells(e.ColumnIndex).value.ToString)
        End If
End Sub

我需要做些什么来解决这个烦人的错误?

1 个答案:

答案 0 :(得分:1)

    Dim isActive As Boolean
    Private Sub Form1_Activated(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Activated
        isActive = True
    End Sub

    Private Sub Form1_Deactivate(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Deactivate
        isActive = False
    End Sub

在任何时间点检查

isActivetrue的{​​{1}},如果falsetrue处于有效状态。

Source

其他解决方案是订阅form并将回报与您的GetForegroundWindow()进行比较:

forms handle