我正在尝试在数据网格中显示一个Windows窗体工具提示以突出显示错误。我遇到的问题是,每当我调用tooltip.Show("You have an error", datagrid, 0, 0)
时,工具提示都被限制在数据网格边界内并且不会出现,这最终意味着工具提示本身会覆盖发生错误的实际行。
我考虑过tooltip.Show("You have an error", Form1, ?, ?)
但我没有看到一种简单的方法来计算表单上数据网格的偏移量。由于所有控件都已停靠,因此根据用户调整表单的大小,位置将会更改。
有一点需要注意,datagrid本身不是Forms.DataGrid,而是一个Infragistics UltraGrid,它本身可以做有趣的事情,这是我无法改变的。
答案 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;
}
}