2009-01-29 87 views
0

我試圖在數據網格中顯示窗體工具提示以突出顯示錯誤。我遇到的問題是,每次我撥打tooltip.Show("You have an error", datagrid, 0, 0)時,工具提示都被限制在數據網格邊界內,並且不會到達外部,這最終意味着工具提示本身會覆蓋發生錯誤的實際行。在數據網格中顯示工具提示

我想到了tooltip.Show("You have an error", Form1, ?, ?)但我沒有看到一種簡單的方法來計算窗體上的數據網格的偏移量。由於所有控件都已停靠,取決於用戶如何調整窗體大小,位置會發生變化。

有一個警告,datagrid本身不是一個Forms.DataGrid,而是一個Infragistics UltraGrid,它本身可以做有趣的事情,這是我的能力改變之外。

回答

0

事實證明,它很容易通過查詢與它相關的UIElement獲得來自的UltraGrid顯示命令的位置。這是我在做什麼:

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; 
    } 
}