9

DataGridView在桌面应用程序中绑定了数据,其中的列ToolTipText设置了属性,但是当我将鼠标悬停在网格视图(单元格或单元格标题)上时没有显示工具提示。

网格视图的ShowCellToolTips属性是true,并且我已经使用断点验证了它在鼠标悬停之前没有以编程方式更改。

我尝试创建一个CellToolTipTextNeeded事件处理程序来查看工具提示文本是什么,但从未调用过事件处理程序。

有什么我错过的吗?

谢谢,罗伯

编辑:我们正在使用框架 2.0。

4

12 回答 12

9

从您的问题看来,您设置了列的工具提示文本。列工具提示文本仅在浮动在标题上时出现。要在单元格上显示工具提示文本,您必须连接事件并在事件参数中CellToolTipTextNeeded设置值e.ToolTipText

于 2009-01-08T00:20:33.533 回答
4

尝试使用 Cell.ToolTipText 属性。您可能需要循环 DataGridView 的行并手动设置工具提示:

 For Each row As DataGridViewRow In Me.DataGridView.Rows
   Me.DataGridView("MyCol", row.Index).ToolTipText = "MyToolTipText"
 Next

可能不适合有很多行的绑定 DataGridView,但对我来说成功地工作有几百行的未绑定 DataGridView。希望这可以帮助。

于 2010-02-11T09:35:02.347 回答
4

当我将带有单个(空)列的 datagridview 添加到表单中,将文本添加到该列的 ToolTipText 属性,并确保 datagridview 的 ShowCellToolTips 属性设置为 True 时,当我将鼠标悬停时确实会弹出一个工具提示将鼠标悬停在该列的标题上。这似乎与原始问题中的陈述相矛盾,但在我的测试中,网格没有数据绑定。不确定这是否会有所作为。但是,在一个带有数据绑定 datagridview 的项目中,我只使用了一个 ToolTip 组件:

(1) 在表单中添加一个 ToolTip 组件。
(2) 将ToolTip on toolTip1datagridview 的(或 ToolTip 组件的等效名称)属性设置为您要显示的任何文本。
(3) 将 datagridview 的 ShowCellToolTips 属性设置为 False。
(4) 中提琴!按预期工作。

于 2010-04-29T21:38:03.983 回答
3

我有一个类似的问题,但能够通过在我的 DataGridView 上将 ShowCellToolTip 设置为 true 来纠正它。一旦我这样做了,我就可以发送以下代码并且一切正常。

tableDocTypes.ShowCellToolTips = true;
tableDocTypes.Rows[i].Cells[columnFormCabinet.Index].ToolTipText = "Cabinet is not defined on the optical server.";
于 2012-05-16T23:43:07.823 回答
3

要显示网格单元的工具提示,您可以使用此事件处理程序“ CellToolTipTextNeeded ”。请参阅以下代码片段,

this.dataGridView1.ShowCellToolTips = true;
this.dataGridView1.CellToolTipTextNeeded += dataGridView1_CellToolTipTextNeeded;

void dataGridView1_CellToolTipTextNeeded(object sender, DataGridViewCellToolTipTextNeededEventArgs e)
{
    if (e.ColumnIndex >= 0 && e.RowIndex >= 0)           
    {
        e.ToolTipText = this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
    }
}
于 2015-10-31T08:17:55.460 回答
2

我们最终使用了 ToolTip 小部件和CellMouseEnter,CellMouseLeave事件来适当地显示它。不是最佳的,但它可以解决我们遇到的奇怪行为。

于 2009-02-13T18:49:52.327 回答
2

将 datagridview ShowCellToolTips 属性设置为 False

于 2016-01-07T20:05:37.723 回答
1

我目前在 Framework 3.5 上遇到了同样的问题。似乎需要设置 DataSource 属性才能触发 CelToolTipTextNeeded 事件。

于 2010-03-19T14:23:23.087 回答
0

我不知道这个技巧是否可以解决您的具体问题,但是您使用的是 VS2008 的 SP1 吗?正如我所发现的,此 Service Pack 解决了许多不同的问题。

于 2008-12-30T07:55:32.600 回答
0

我发现这篇文章正在寻找有关设置每行工具提示的帮助。

我只是想确认在 VS2008 SP1 中处理 CellToolTipText 事件对我有用。

对于那些想知道如何将文本设置为基础数据行中的值的人,这可能很有用:

    private void myDGV_CellToolTipTextNeeded(object sender, DataGridViewCellToolTipTextNeededEventArgs e)
    {
        // This is used to set tooltiptext for individual cells in the grid.
        if (e.ColumnIndex == 2)  // I only want tooltips for the second column (0-based)
        {
            if (e.RowIndex >= 0)   // When grid is initialized rowindex == 0
            {
                // e.ToolTipText = "this is a test."; // static example.

                DataRowView drv = ((DataGridView)sender).Rows[e.RowIndex].DataBoundItem as DataRowView;
                MyTableRowClass theRow = drv.Row as MyTableRowClass;
                e.ToolTipText = theRow.Col1  + "\r\n" + theRow.Col2;
            }
        }
    }
于 2010-08-12T16:04:19.087 回答
0
  1. 将 DataGridView 的ShowCellToolTips属性设置为false
  2. 将此代码放入 DataGridView 的CellMouseEnter事件中

    private void dgv_CellMouseEnter(object sender, DataGridViewCellEventArgs e)
    {
        if (!(dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].GetType() == typeof(DataGridViewImageCell))) return;
        System.Windows.Forms.ToolTip tlp = new System.Windows.Forms.ToolTip();
        tlp.SetToolTip(dgv, "Your ToolTipText");
    }
    
于 2015-09-08T05:23:52.253 回答
0

有一个相关的问题,其中 CellToolTipTextNeeded 只会偶尔被调用。当单元格中存在溢出时,该行为是工具提示上的工具提示。当单元格的 WrapMode 设置为 true 时,每次都会正确调用 CellToolTipTextNeeded。我认为将调用 CellToolTipTextNeeded 并覆盖通用工具提示,但它似乎仅在第一次进入 datagridview.cell 时调用此事件,然后,如果鼠标离开单元格并重新打开(保留在 datagridview 中),“查看溢出工具提示”改为显示...

无论如何,信息可能会帮助其他人。

于 2018-11-12T06:08:45.263 回答