在数据网格中显示工具提示

时间:2009-01-29 22:25:56

标签: winforms datagrid tooltip

我正在尝试在数据网格中显示一个Windows窗体工具提示以突出显示错误。我遇到的问题是,每当我调用tooltip.Show("You have an error", datagrid, 0, 0)时,工具提示都被限制在数据网格边界内并且不会出现,这最终意味着工具提示本身会覆盖发生错误的实际行。

我考虑过tooltip.Show("You have an error", Form1, ?, ?)但我没有看到一种简单的方法来计算表单上数据网格的偏移量。由于所有控件都已停靠,因此根据用户调整表单的大小,位置将会更改。

有一点需要注意,datagrid本身不是Forms.DataGrid,而是一个Infragistics UltraGrid,它本身可以做有趣的事情,这是我无法改变的。

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

事实证明,通过查询与之关联的UIElement,从UltraGrid获取Show命令的位置非常容易。这就是我正在做的事情:

private void ultraGrid1_BeforeCellUpdate(object sender, BeforeCellUpdateEventArgs e)
{
    if (!DataFormat.CanEdit(e.Cell.Row.ListObject, e.Cell.Column.PropertyDescriptor))
    {  
        var tip = new System.Windows.Forms.ToolTip();
        tip.BackColor = Color.Orange;
        tip.Show("unable to edit", this, e.Cell.GetUIElement().Rect.Left, e.Cell.GetUIElement().Rect.Top, 500);
        e.Cancel = true;
    }
}