2009-07-16 3 views
2

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

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

+0

Должны ли быть какие-либо заголовки столбцов? Где они должны быть? – xyz

+0

Я бы держал их наверху. –

ответ

0

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

+0

Это было лучшее (и наименее сложное) приближение к поведению, которое я хотел. –

0

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

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

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 границы), но код фиксирует точку.

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

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

+0

Я не ожидаю, что это сработает. Вы пробовали с вертикальной полосой прокрутки? (Среди множества других возражений). –

+0

Да - оба видны - вертикальные и горизонтальные. Самое смешное, что пользовательское событие окраски ячеек работает без особых проблем, если вы сохраняете исходную ориентацию. –

Смежные вопросы