2012-03-25 103 views
2

我試圖通過DataGridView中的行繪製線條。這個想法是完成甘特圖。現在我可以繪製欄欄。但是當任務之前有另一個任務時,我需要畫出連接它們的線。通過行在DataGridView中繪製線條

這就是我現在所在:enter image description here

我需要的是繪製連接器,例如,「利亞6」和「利亞7」在橢圓

enter image description here

+0

你是怎麼解決繪製甘特紅/藍條?什麼阻止您使用相同的方法繪製連接器? – digEmAll 2012-03-25 17:52:52

+0

@digEmAll。所有酒吧被繪製在一個獨特的單元格中,覆蓋OnCellPaint。紅色意味着任務被延遲,黑色意味着準時。藍條是任務,灰色是組,而第一行的黑色是所有項目的進步。問題是,當我想繪製一行一行,最後一行結束時,我只能繪製第一行的行,那就是我的繪圖區域。 – Nane 2012-03-25 18:42:58

回答

0

老實說它看起來很棘手。請考慮使用CellPaining。但我認爲實施你所需要的可能會很痛苦。

+0

我重寫了OnCellPaint以繪製條形圖。即使它看起來很多細胞,它也只是一個。問題是,當我想繪製一行一行,最後一行結束時,我只能繪製第一行的行,那就是我的繪圖區域。 – Nane 2012-03-25 18:46:16

+0

什麼阻止找到下一行的單元格位置並在那裏繪製? – 2012-03-25 19:02:52

+0

嗯。可能我可以繪製DataGridView的圖形對象而不是單元格。我今晚會試試,讓你知道。謝謝Andriy – Nane 2012-03-25 19:18:20

1

嘗試RowPostPaint事件,例如:

e.Graphics.FillRectangle(Brushes.Red, 20, e.RowBounds.Top + 6, 
         e.RowBounds.Width, CInt(e.RowBounds.Height/2)); 
+1

阿門。問題在於RowBounds只是一行。 – Nane 2012-03-25 18:48:29

+1

@Nane,你沒有得到它,它爲每一行渲染,所以如果你想繪製特定的行,所以你打電話if(e.RowIndex ==某事)e.Graphics ...否則就像我的代碼沒有條件 – 2012-03-25 20:09:16