0
我正在嘗試刷新DataGridViewCell
的工具提示,而不必使用光標離開並重新進入單元格。如何在顯示DataGridView單元格時刷新工具提示?
我爲單元格的ToolTipText
屬性指定了一個新值,但是當工具提示顯示時,更改列的屬性對正在顯示的工具提示沒有任何影響。
這是我的服務器應用程序的快照。人們可以加入,你可以看到他們平安:
我希望能夠看到怎樣的改變平。
我正在嘗試刷新DataGridViewCell
的工具提示,而不必使用光標離開並重新進入單元格。如何在顯示DataGridView單元格時刷新工具提示?
我爲單元格的ToolTipText
屬性指定了一個新值,但是當工具提示顯示時,更改列的屬性對正在顯示的工具提示沒有任何影響。
這是我的服務器應用程序的快照。人們可以加入,你可以看到他們平安:
我希望能夠看到怎樣的改變平。
當單元格的ToolTip
顯示時,更改單元格的ToolTipText
不會自動更改工具提示文本。要更改它,您可以處理CellToolTipChanged
事件DataGridView
以檢測單元格的ToolTipText
中的更改。然後,你可以檢查使DataGridView
使用這些代碼顯示在提示的新案文:
private void dgv_CellToolTipTextChanged(object sender, DataGridViewCellEventArgs e)
{
var grid = (DataGridView)sender;
var toolTipControl = grid.GetType().GetField("toolTipControl",
System.Reflection.BindingFlags.NonPublic |
System.Reflection.BindingFlags.Instance).GetValue(grid);
var activated = (bool)toolTipControl.GetType()
.GetProperty("Activated").GetValue(toolTipControl);
if (activated)
{
var cell = grid[e.ColumnIndex, e.RowIndex];
var ActivateToolTip = typeof(DataGridView).GetMethod("ActivateToolTip",
System.Reflection.BindingFlags.NonPublic |
System.Reflection.BindingFlags.Instance);
ActivateToolTip.Invoke(grid,
new object[] { true, cell.ToolTipText, e.ColumnIndex, e.RowIndex });
}
}
例
舉個例子,我改變了細胞的ToolTipText
在計時器得到以下結果:
private void timer1_Tick(object sender, EventArgs e)
{
this.dataGridView1.Rows[0].Cells[0].ToolTipText = DateTime.Now.ToString();
}
所以上面你會得到一個名爲「toolTipControl領域「,那一套在哪裏? –
我剛剛處理'DataGridView'的'CellToolTipTextChanged'事件。剩下的代碼使用反射找到DataGridView的內部工具提示控件,並使其顯示新的工具提示文本。 –
因爲當我嘗試獲取字段時,我所得到的都是'null'。我想我錯過了一些東西。 –