我在C#中有一個綁定datagridview的Windows窗體應用程序。我正在尋找一種方法來增加特定列的單元格的工具提示持續時間。工具提示通過設置cell.TooltipText屬性在CellMouseEnter處理程序中設置。從我在互聯網上做的研究來看,似乎我應該有一個外部工具提示對象來增加延遲。但是,對此,ShowCellToolTips應該設置爲false。我需要將ShowCellToolTips設置爲true,因爲cell.ToolTipText正在爲其他各種函數中的其他列單元格設置。有沒有辦法繞過默認的cell.ToolTipText屬性的特定列的單元格,並有外部工具提示對象顯示工具提示?我們的目標是讓ShowCellToolTips設置爲true,並增加工具提示的延遲時間,或者讓用戶控制關閉工具提示。有沒有辦法做到這一點?任何幫助將非常感激。謝謝。如何覆蓋C#datagridview的默認工具提示行爲以增加特定單元格的工具提示延遲
0
A
回答
4
您可以在DataGridView中使用常規的ToolTip控件,該控件允許您使用ToolTip的duration屬性來設置ToolTip顯示的時間量。
試試這個:
- 添加工具提示控件到窗體
- 使用您DGV的CellToolTipTextNeeded(或CellMouseEnter) 事件,以確定是否要 顯示您的工具提示,如果這樣稱呼 工具提示的ToolTip.Show 方法。
下面是一個例子:我們不使用CellToolTipTextNeeded事件設置的DataGridViewCell的ToolTipText屬性
private void dataGridView1_CellToolTipTextNeeded(object sender, DataGridViewCellToolTipTextNeededEventArgs e) {
if (e.ColumnIndex == 2) { // Display the tool tip only on DGV ColumnIndex 2.
Rectangle cellRect = dataGridView1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, false);
toolTip1.Show("This is my ToolTip text",
this,
dataGridView1.Location.X + cellRect.X + cellRect.Size.Width,
dataGridView1.Location.Y + cellRect.Y + cellRect.Size.Height,
5000); // Duration: 5 seconds.
} else if (e.ColumnIndex >= 0 && e.RowIndex >= 0) {
toolTip1.Hide(this);
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].ToolTipText = " Hello from column: " + e.ColumnIndex.ToString();
}
}
通知。
使用ToolTip控件的一個優點是您可以通過ToolTip控件的屬性自定義您的ToolTip的外觀和行爲。
0
我認爲你可以關閉DataGridView.ShowToolTip
並處理MouseEnter
事件。
有關使用工具提示此Microsoft文章: http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.cellmouseenter.aspx
一個我不得不使用JayRiggs的解決方案是問題的是,當電網有一欄不顯示完整的文本,有兩個提示顯示。一個是顯示的自定義工具提示,另一個是默認工具提示。
相關問題
- 1. Datagridview單元格工具提示延遲時間
- 2. 顯示工具提示前的延遲
- 3. jQuery UI工具提示延遲加載
- 4. jquery工具提示延遲顯示
- 5. 如何在顯示DataGridView單元格時刷新工具提示?
- 6. 如何在DataGridView單元格中爲工具提示設置autoPopDelay?
- 7. 有延遲的gwt工具提示
- 8. DataGridView上的工具提示
- 9. PySide:即時工具提示(在顯示工具提示前不延遲)
- 10. 設置SWT工具提示延遲
- 11. NSStatusItem工具提示 - 更改延遲
- 12. Flex 3:errorstring工具提示延遲?
- 13. 延遲檢票組件工具提示
- 14. jquery flowplayer工具提示:覆蓋默認事件參數
- 15. 單元格上的工具提示。 GWT
- 16. SlickGrid中的單元格工具提示
- 17. 如何在winforms中增加datagridview中的工具提示長度
- 18. 選擇datagridview單元格時顯示工具提示
- 19. Datagridview單元格工具提示自動換行
- 20. 如何推遲顯示工具提示?
- 21. 編輯jquery工具提示腳本以禁用默認工具提示
- 22. 覆蓋凹坑工具提示文本
- 23. 工具提示覆蓋在圖表JS
- 24. 顯示DataGridView中的rowHeader工具提示
- 25. 用jQuery工具提示替換所有標題的默認工具提示
- 26. WPF Datagrid單元格工具提示
- 27. 在C#中驗證單元格並顯示datagridview的氣球工具提示
- 28. 如何實現延遲顯示twipsy工具提示
- 29. 工具提示定位C#
- 30. 如何將工具提示添加到jtable中的單元格?
感謝您的回覆。我應該在哪裏清除DGV列上的ToolTipText屬性。我目前正在cellMouseEnter中做這件事,並且我已經爲DGV列定義了cellToolTipTextNeeded。我沒有看到單元格上出現工具提示。猜猜,當我們獲取/設置ToolTipText屬性時,cellToolTipTextNeeded會被觸發,對吧? – SupCSharp 2011-04-19 17:27:03
@SupCSharp我假設你在WinForm設計器中設置了列的ToolTipProperty屬性。我只是想確保你沒有使用該屬性,因爲你會使用標準的ToolTip控件_instead_。 CellToolTipTextNeeded事件觸發不是ToolTipText屬性的函數,但有些情況下它不會觸發(檢查[docs](http://msdn.microsoft.com/zh-cn/library/system.windows)。 forms.datagridview.celltooltiptextneeded.aspx))。如果該事件不適合您,您可以將我的代碼放到DGV的CellMouseEnter事件中,它應該可以工作。 – 2011-04-19 20:14:34
通過ToolTipProperty,你是指ShowCellToolTips屬性?如果是,我將它設置爲true,我希望它對於其他列的工具提示是正確的。我是否可以在DGV列上使用工具提示控件,在那裏我想增加延遲,並將ShowCellToolTIps設置爲true? – SupCSharp 2011-04-20 15:07:50