2009-01-29 7 views
0

J'essaie d'afficher une info-bulle de formulaires Windows dans une grille de données pour mettre en évidence une erreur. Le problème que j'ai est que chaque fois que j'appelle tooltip.Show("You have an error", datagrid, 0, 0), l'info-bulle est confinée dans les limites de la grille de données et ne sort pas à l'extérieur, ce qui signifie que l'info-bulle elle-même recouvre la ligne réelle où l'erreur se produit.Affichage d'une info-bulle dans une grille de données

Je pensais à tooltip.Show("You have an error", Form1, ?, ?) mais je ne vois pas un moyen facile de calculer le décalage de la grille de données sur le formulaire. Étant donné que tous les contrôles sont ancrés, en fonction de la façon dont l'utilisateur redimensionne le formulaire, l'emplacement changera.

Il y a une mise en garde, le DataGrid lui-même n'est pas un Forms.DataGrid, à la place c'est un Infragistics UltraGrid qui peut faire des choses drôles lui-même, qui sont en dehors de ma capacité à altérer.

Répondre

0

Il se trouve qu'il est assez facile d'obtenir l'emplacement de la commande Afficher du UltraGrid en interrogeant le UIElement associé. Voici ce que je fais:

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