8

我在桌面應用程序中綁定了數據綁定,其列的屬性設置爲ToolTipText,但當我將鼠標懸停在網格視圖(單元格或單元格標題)上時沒有顯示任何工具提示。DataGridView ToolTipText沒有顯示

ShowCellToolTips網格視圖的屬性是true,我已經使用斷點進行了驗證,在我將鼠標懸停之前,它不會以編程方式更改。

我試圖創建一個CellToolTipTextNeeded事件處理程序,看看有什麼工具提示文本爲,但該事件處理程序不會被調用。

有什麼我錯過了嗎?

感謝, 羅布

編輯:我們使用框架2.0。

+0

我知道這是一個老問題,但黑客工作,與周圍的工具提示組件真正正確的答案?我們遇到與列/單元格工具提示未顯示相同的問題。這看起來像DataGridView中的一個應該得到解決的錯誤。 – Yoopergeek 2010-01-27 14:31:13

+0

@Yoopergeek我同意,這是一個錯誤。我被告知它已在Framework 3.0中修復,但由於安裝程序的限制,我們無法升級。 – 2010-01-27 14:41:29

+1

我使用3.5 ...還沒有修復。 ;) – Yoopergeek 2010-01-27 14:55:56

回答

2

我們結束了使用工具提示窗口小部件和CellMouseEnter設置e.ToolTipText值的細胞提示文本,CellMouseLeave事件以適當表現出來。不是最佳的,但它適用於我們遇到的奇怪行爲。

0

我不知道這個提示是否是針對您的特定問題的解決方案,但是您是否使用VS2008的SP1? 正如我發現的,此Service Pack解決了許多不同的問題。

+0

@WunderWuzzi。不,我們沒有安裝SP1。我會和項目的技術負責人交談,看看我們能不能嘗試。 然後我會更新問題。非常感謝。 – 2009-01-02 14:19:12

8

從您的問題看來,您設置了列的工具提示文本。 僅當懸浮在標題上時,纔會顯示列提示文本。爲了表示對你有來裝CellToolTipTextNeeded事件和事件參數

+0

感謝您的答覆,但作爲問題指出: 一)提示文本沒有顯示在CellToolTipTextNeeded事件處理函數不是射擊 – 2009-01-08 19:27:49

+0

頭要麼 B)這對我的作品中:private void dgvPlatypus_CellToolTipTextNeeded(對象發件人,DataGridViewCellToolTipTextNeededEventArgs e){e.ToolTipText =「j。cutworm是一個朋克」; } – 2012-09-14 22:52:33

+0

CellToolTipTextNeeded沒有被激發。任何提示呢? – Kenta 2013-10-24 11:54:42

4

嘗試使用Cell.ToolTipText屬性。你可能會需要循環DataGridView中的行和手動設置提示:

For Each row As DataGridViewRow In Me.DataGridView.Rows 
    Me.DataGridView("MyCol", row.Index).ToolTipText = "MyToolTipText" 
Next 

可能不適合用於大量的行綁定的DataGridView,但與未綁定的DataGridView有幾百成功對我的作品行。希望這可以幫助。

1

我目前在Framework 3.5上遇到了同樣的問題。似乎需要設置DataSource屬性才能觸發CelToolTipTextNeeded事件。

3

當我添加一個帶有單個(空)列的datagridview到表單時,將文本添加到該列的ToolTipText屬性,並確保將datagridview的ShowCellToolTips屬性設置爲True,我得到一個工具提示彈出當我將鼠標懸停在該列的標題上時。這似乎與原始問題中陳述的內容相矛盾,但在我的測試中,網格並未受到數據的限制。不知道這是否有所作爲。然而,與數據綁定datagridview的一個項目,我只是用一個工具提示組件:

(1)工具提示組件添加到您的窗體。
(2)將您的datagridview的ToolTip on toolTip1(或您的ToolTip組件的等效名稱)屬性設置爲要顯示的任何文本。
(3)將你的datagridview的ShowCellToolTips屬性設置爲False。
(4)Viola!按預期工作。

0

我發現這篇文章尋找每行設置工具提示的幫助。

我只想確認在VS2008 SP1中處理CellToolTipText事件對我有效。

對於那些你們誰是想知道如何在文本設置爲從底層數據行的值,這可能是有用的:

private void myDGV_CellToolTipTextNeeded(object sender, DataGridViewCellToolTipTextNeededEventArgs e) 
    { 
     // This is used to set tooltiptext for individual cells in the grid. 
     if (e.ColumnIndex == 2) // I only want tooltips for the second column (0-based) 
     { 
      if (e.RowIndex >= 0) // When grid is initialized rowindex == 0 
      { 
       // e.ToolTipText = "this is a test."; // static example. 

       DataRowView drv = ((DataGridView)sender).Rows[e.RowIndex].DataBoundItem as DataRowView; 
       MyTableRowClass theRow = drv.Row as MyTableRowClass; 
       e.ToolTipText = theRow.Col1 + "\r\n" + theRow.Col2; 
      } 
     } 
    } 
1

我有一個simular問題,但能夠通過設置來糾正它ShowCellToolTip在我的DataGridView上爲true。一旦我這樣做,我能夠發送以下代碼,一切正常。

tableDocTypes.ShowCellToolTips = true; 
tableDocTypes.Rows[i].Cells[columnFormCabinet.Index].ToolTipText = "Cabinet is not defined on the optical server."; 
0
  1. 設置你的DataGridView的ShowCellToolTips屬性false
  2. 將這個代碼在你的DataGridView的CellMouseEnter事件

    private void dgv_CellMouseEnter(object sender, DataGridViewCellEventArgs e) 
    { 
        if (!(dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].GetType() == typeof(DataGridViewImageCell))) return; 
        System.Windows.Forms.ToolTip tlp = new System.Windows.Forms.ToolTip(); 
        tlp.SetToolTip(dgv, "Your ToolTipText"); 
    } 
    
2

要顯示網格單元的提示,你可以使用此事件處理程序「CellToolTipTextNeeded「。請參考下面的代碼片段,

this.dataGridView1.ShowCellToolTips = true; 
this.dataGridView1.CellToolTipTextNeeded += dataGridView1_CellToolTipTextNeeded; 

void dataGridView1_CellToolTipTextNeeded(object sender, DataGridViewCellToolTipTextNeededEventArgs e) 
{ 
    if (e.ColumnIndex >= 0 && e.RowIndex >= 0)   
    { 
     e.ToolTipText = this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString(); 
    } 
} 
1

設置的datagridview ShowCellToolTips屬性設爲False