我有一个winform datagridview,其中包含一列按钮。我想仅禁用该列的工具提示 - 工具提示仍应显示其他列。我发现工具提示妨碍了点击按钮 - 当点击工具提示时,点击事件不会渗透到按钮。非常烦人。
我尝试过处理CellTooltipNeeded事件并为该列返回null或空字符串,但工具提示只是恢复为在工具提示中显示按钮文本。我也尝试将Column.ToolTipText设置为空字符串,并正确隐藏列标题的工具提示,但所有其他行的工具提示仍然显示。
禁用整列的工具提示的最佳方法是什么?
由于 麦
答案 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)
{ }
}