2011-03-28 85 views
0

我有一個winform datagridview其中包含一列按鈕。我只想禁用該列的工具提示 - 工具提示仍應顯示爲其他列。我發現工具提示的方式是點擊按鈕 - 當點擊工具提示時,點擊事件不會滲透到按鈕。很煩人。如何禁用整個.net DataGridView列的工具提示

我已經嘗試過處理CellTooltipNeeded事件,併爲該列返回null或空字符串,但隨後工具提示只是恢復爲在工具提示中顯示按鈕文本。我也嘗試將Column.ToolTipText設置爲空字符串,並且正確隱藏了列標題的工具提示,但所有其他行的工具提示仍然顯示出來。

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

感謝 吉米,你想

回答

3

我一直在尋找這個問題的答案,但所有論壇都表示這是不可能的。但是,我確實找到了解決方案。

在您的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屬性。

我只是對不起,我發現這個帖子發佈五年後的答案!

+0

是的,這個效果很好。 – Jimmy 2016-05-28 12:00:40

1

是否設置爲空間幫你嗎?否則,嘗試一個點或者一些非常小的東西。

+0

有趣的解決方法:)它並沒有讓我一路,因爲工具提示仍然顯示出來......但它比有完整的按鈕文本更好。 – Jimmy 2011-03-29 01:21:17

+0

不幸的是,它不適合我。當它設置爲空格或'String.Empty'時,它將保持其舊值。 :/ – C4u 2016-02-11 15:32:29

+0

@ C4ud3x這就是爲什麼她說將其設置爲空格或句點,而不是String.Empty。不過,馬克K現在似乎有一個更好的答案,我會盡快進行測試。 – Jimmy 2016-05-19 13:09:12

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) 
     { } 
    }