Отображение всплывающей подсказки внутри сетки данных - PullRequest
0 голосов
/ 30 января 2009

Я пытаюсь показать всплывающую подсказку для оконных форм внутри сетки данных, чтобы выделить ошибку. Проблема, с которой я сталкиваюсь, заключается в том, что каждый раз, когда я вызываю tooltip.Show("You have an error", datagrid, 0, 0), всплывающая подсказка ограничена границами сетки данных и не выходит наружу, что в конечном итоге означает, что сама всплывающая подсказка скрывает фактическую строку, в которой происходит ошибка.

Я думал о tooltip.Show("You have an error", Form1, ?, ?), но я не вижу простого способа вычислить смещение сетки данных в форме. Поскольку все элементы управления закреплены, в зависимости от того, как пользователь изменяет размер формы, местоположение изменится.

Есть предостережение, сама сетка данных не является сетью Forms.DataGrid, вместо этого она представляет собой InfraGistics UltraGrid, которая сама может делать забавные вещи, которые находятся за пределами моей способности изменять.

Ответы [ 2 ]

0 голосов
/ 24 февраля 2010

Оказывается, достаточно просто получить местоположение команды Show из UltraGrid, запросив связанный с ней UIElement. Вот что я делаю:

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;
    }
}
0 голосов
/ 30 января 2009
...