如何禁用整个.net DataGridView列的工具提示

时间:2011-03-28 19:31:21

标签: .net winforms datagridview tooltip

我有一个winform datagridview,其中包含一列按钮。我想仅禁用该列的工具提示 - 工具提示仍应显示其他列。我发现工具提示妨碍了点击按钮 - 当点击工具提示时,点击事件不会渗透到按钮。非常烦人。

我尝试过处理CellTooltipNeeded事件并为该列返回null或空字符串,但工具提示只是恢复为在工具提示中显示按钮文本。我也尝试将Column.ToolTipText设置为空字符串,并正确隐藏列标题的工具提示,但所有其他行的工具提示仍然显示。

禁用整列的工具提示的最佳方法是什么?

由于 麦

3 个答案:

答案 0 :(得分:4)

我一直在寻找这个问题的答案,但所有论坛都表示不可能。但是,我确实找到了解决方案。

在DataGridView上,处理CellMouseEnter事件。在事件处理程序中,DataGridViewCellEventArgs包含ColumnIndex属性。用它来设置DataGridView.ShowCellToolTips属性。像这样(请原谅VB):

Private Sub MyDataGridView_CellMouseEnter(sender As Object, e as DataGridViewCellEventArgs) Handles DataGridView.CellMouseEnter
    MyDataGridView.ShowCellToolTips = e.ColumnIndex = <the Column # I want to show Tooltips>
End Sub

显然,由于DataGridViewCellEventArgs还包含RowIndex属性,因此在单元格级别打开或关闭此功能非常简单。

我很抱歉,我发现这个答案已经过了五年了!

答案 1 :(得分:1)

将它设置到某个空间可以获得您想要的位置吗?否则,尝试一个非常小的点或其他东西。

答案 2 :(得分:0)

基于Mark K's answer,这是一个静态方法,可用于隐藏按钮列的工具提示,并显示其他列(包括列和行标题)。

    public static void CellMouseEnterHandlerToHideTooltipsForButtonColumns(object sender, DataGridViewCellEventArgs e)
    {
        try
        {
            DataGridView grid = sender as DataGridView;
            grid.ShowCellToolTips = (e.RowIndex < 0) || (e.ColumnIndex < 0) || !(grid.Columns[e.ColumnIndex] is DataGridViewButtonColumn);
        }
        catch (Exception)
        { }
    }