Как нарисовать строки в нижней части DataGridView? - PullRequest
2 голосов
/ 16 июля 2009

Я использую DataGridView с DataTable в качестве стека для некоторых значений. Что-то записывается в строки DataTable, а затем я отправляю их куда-нибудь в стиле FIFO - было бы очень неплохо нарисовать строки в направлении снизу вверх (чтобы сложить их вверх) вместо вверх-> направление вниз.

Как этого добиться, поскольку события рисования полезны только для рисования ячеек / отдельных строк?

Ответы [ 2 ]

0 голосов
/ 16 июля 2009

Напишите собственный стек, который использует фиктивный объект для пустых слотов в стеке. Фиктивный объект может быть статическим объектом с пустыми свойствами. По мере заполнения стека удалите фиктивный объект и добавьте туда новый элемент. Затем используйте этот стек в качестве источника привязки. Фиктивные объекты в конце стека гарантируют, что первые / верхние строки в ячейках DataGridView пусты. Таким образом, вам не нужно беспокоиться об изменении поведения DataGridView.

0 голосов
/ 16 июля 2009

Извините, мне было немного неясно (я не был уверен, что он выровнен по нижнему краю или пристыкован снизу, или что-то еще, поэтому я пропустил эту часть).

Но, тем не менее, я понял это. Кажется, что событие CellPainting не ограничено границами ячеек, поэтому вы можете просто переместить ограничивающий прямоугольник ячейки, например:

Rectangle^ newRect = gcnew Rectangle(
    e->CellBounds.X, 
    DataGridView->Bounds.Bottom-e->CellBounds.Y, // this is the moving part
    e->CellBounds.Width,
    e->CellBounds.Height
);

Есть некоторые незначительные изменения, которые следует рассмотреть (если видна нижняя полоса прокрутки, границы DataGridView), но код фиксирует точку.

Глядя на проблему на расстоянии, уверенность делает свое дело;)

Редактировать: Да, действительно, это подтягивает ячейки снизу вверх, НО это также делает некоторые забавные эффекты при вертикальной / горизонтальной прокрутке и изменении фокуса окна. И да, нет заголовочных ячеек. Вернуться к чертежной доске.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...