2009-07-16 56 views
2

我正在使用DataGridView,並將DataTable作爲某些值的堆棧。有些東西會被記錄到DataTable的行中,然後我會以FIFO的方式將它們發送到某處 - 將底部 - >向上(將它們堆疊起來)方向而不是向上 - >向下繪製行將會非常好。如何繪製DataGridView底部的行?

我該如何做到這一點,因爲繪畫事件僅用於繪製單元格/單行?

+0

是否有任何列標題?他們應該在哪裏? – xyz 2009-07-16 14:03:48

+0

我會讓他們在頂部。 – 2009-07-16 14:12:50

回答

0

編寫一個自定義堆棧,該堆棧將虛擬對象用於堆棧中的空插槽。虛擬對象可以是具有空屬性的靜態對象。填充堆棧時,請刪除虛擬對象並在其中添加新項目。然後使用這個堆棧作爲綁定源。堆棧末尾的虛擬對象確保DataGridView單元格中的第一行/頂部行爲空。這樣你就不必費心修改DataGridView的行爲。

0

我很抱歉,我有點不清楚(我不確定它是底部對齊的還是底部對接的或者其他的,所以我省略了那部分)。

但是,我想通了。看來,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邊界),但代碼捕捉了這一點。

看從遠處肯定不會把戲問題;)

編輯:確實是這樣,由此得出細胞乾杯,但它也使得垂直/水平滾動和窗口焦點改變一些時髦的影響。是的,沒有標題單元格。回到繪圖板。

+0

我不指望這會起作用。您是否嘗試過使用垂直滾動條可見? (在許多其他異議中)。 – 2009-07-16 14:15:18