Когда отображается 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 ", где это множество? –
Я просто обработал событие CellToolTipTextChanged 'DataGridView'. Остальная часть кода находит внутреннее управление всплывающей подсказкой «DataGridView» с использованием отражения и позволяет отображать новый текст всплывающей подсказки. –
Потому что, когда я пытаюсь получить поле, все, что я получаю, это «null». Кажется, я что-то упускаю. –