如何显示DataGridView单元格的工具提示?

时间:2017-01-05 15:34:02

标签: c# .net winforms datagridview tooltip

我正在尝试刷新DataGridViewCell的工具提示而不离开并使用光标重新输入单元格。

我为单元格的ToolTipText属性分配了一个新值,但是在显示工具提示时,更改列的ToolTipText属性对正在显示的工具提示没有任何影响。

这是我的服务器应用程序的快照。人们可以加入,你可以看到他们的ping:

我希望能够看到ping的变化。

1 个答案:

答案 0 :(得分:1)

当显示单元格的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();
}

enter image description here