0

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

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

需要注意的是,数据网格本身不是 Forms.DataGrid,而是一个 Infragistics UltraGrid,它本身可能会做一些有趣的事情,这超出了我的能力范围。

4

2 回答 2

0

你看过这些:

HOWTO:为 WinGrid 创建高级工具提示

BeforeDisplayDataErrorTooltip 事件

于 2009-01-29T23:42:40.850 回答
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;
    }
}
于 2010-02-23T23:13:54.727 回答