基于此如何:將工具提示添加到 Windows 表單 DataGridView 控制元件中的單個單元格 - 我為我的 DataGridView 中的單個單元格實作了特定的工具提示。
void init() {
dgv.CellFormatting = CellToolTip;
}
void CellToolTip(object sender, DataGridViewCellFormattingEventArgs e) {
if ((e.ColumnIndex == dgv.Columns["xxx"].Index) && e.Value != null)
{
[...]
DataGridViewCell cell = dgv.Rows[e.RowIndex].Cells[e.ColumnIndex];
cell.ToolTipText = "test";
}
}
是否可以修改持續時間以延長我的 ToolTip 顯示時間,或者我是否必須創建 ToolTip 物件并使用 ToolTip.AutomaticDelay 等屬性?
uj5u.com熱心網友回復:
您可以使用Reflection來訪問內部ToolTip組件,該組件是名為 的內部私有類的成員DataGridViewToolTip。該類有一個公共的只讀屬性回傳ToolTip實體,您可以訪問該實體以獲取或設定其屬性和/或執行實體方法。
這是擴展方法示例。
//
using System.Reflection;
// ...
internal static class DataGridViewExt
{
internal static ToolTip GetInternalToolTip(this DataGridView dgv)
{
var ttcName = "toolTipControl";
var ttpName = "ToolTip";
var ttc = dgv
.GetType()
.GetField(ttcName, BindingFlags.NonPublic | BindingFlags.Instance)
.GetValue(dgv);
var ttp = ttc
.GetType()
.GetProperty(ttpName, BindingFlags.Public | BindingFlags.Instance)
.GetValue(ttc);
return ttp as ToolTip;
}
}
呼叫GetInternalToolTip擴展方法并設定組件的屬性。
private void SomeCaller()
{
var ttp = dataGridView1.GetInternalToolTip();
ttp.AutoPopDelay = 3000;
ttp.ToolTipTitle = "Tip";
ttp.ToolTipIcon = ToolTipIcon.Info;
}
對于您的具體問題,您只需要調整AutoPopDelay屬性。所以:
private void SomeCaller() => dataGridView1.GetInternalToolTip().AutoPopDelay = 3000;
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/509994.html
標籤:C#表格数据网格视图
上一篇:dataGridView.Sort錯誤System.InvalidOperationException:“DataGridView控制元件必須系結到要排序的IBindingList物件。”
