2015-11-18 85 views
0

我尋找一種方式,使在C#在這個圖片中顯示的一些變化到DataGridView:Current DatagridviewC#DataGridView的視覺設置

它由兩列,並在這種情況下,6行。

它應該是一個清單,你正在閱讀:「電池.... ON」等。 要獲得左列和右列之間的點,我只是在每個字符串之前和之後添加許多點。

電池串看起來是這樣的:

"BATTERY...............................". 

的「ON」右側列字符串應該是這樣的:

"..............ON" 

正如你可以看到,仍有之間的間隙點,我怎麼擺脫這個? CellBorderStyle IST設置爲:

checklist_dataGridView.CellBorderStyle = DataGridViewCellBorderStyle.SingleHorizontal; 

此外,還有左,右列之間的輕微高度差,這是這應該做出正確的列文

checklist_dataGridView.Columns[1].DefaultCellStyle.WrapMode = DataGridViewTriState.True; 

結果從右到左。

沒有這一點,右邊欄則只會顯示「...........................」

有沒有更好的如何正確對齊一切?

感謝您的幫助

阿克塞爾 - [R

編輯: 我已經通過使一列,並簡單地計算字符串的寬度解決了這個問題。如果字符串未達到列的寬度,則會向該字符串添加一個點。這對我很好。

+0

感謝您的答案,但不是很滿意(還)。沒有更好的方法嗎? –

回答

0

通過使用自定義單元格繪製網格線,您可以接近您想要的佈局。您可以自定義將底部網格線繪製爲綠色虛線,並跳過將點添加到單元格值。唯一的區別是這些線會橫跨整個網格。

首先確保左列底部靠左對齊,右列底部右對齊:

checklist_dataGridView.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomLeft; 
checklist_dataGridView.Columns[0].DefaultCellStyle.ForeColor = System.Drawing.Color.LightGreen; 

checklist_dataGridView.Columns[1].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomRight; 
checklist_dataGridView.Columns[1].DefaultCellStyle.ForeColor = System.Drawing.Color.LightGreen; 

要自定義繪製細胞與底部的綠色虛線,就可以實現一個DataGridView CellPainting handler:

private void checklist_dataGridView_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) 
{ 
    if (e.RowIndex > -1) 
    { 
     e.Handled = true; 
     e.Graphics.FillRectangle(System.Drawing.Brushes.Black, e.CellBounds);     

     using (Pen p = new Pen(Brushes.LightGreen)) 
     { 
      p.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot; 
      e.Graphics.DrawLine(p, new Point(0, e.CellBounds.Bottom - 1), new Point(e.CellBounds.Right, e.CellBounds.Bottom - 1)); 
     } 

     e.PaintContent(e.ClipBounds); 
    } 
} 
0

對不起...你不能擺脫差距,因爲checklist_dataGridView.DefaultCellStyle.Padding = new Padding(0, 0, 0, 0);不採取負值。

現在爲了使您的原始代碼工作,我將只添加一個空格點空格點空格點,如「.......」。 這樣你不會看到單元格上的點,文本將被纏繞。另外,如果您在左側單元格上以圓點結束並以右側單元格上的圓點開始,那麼間隙將接近空間距離並且不太明顯。

不要忘記這個讓你的文字環繞:

checklist_dataGridView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells; 
checklist_dataGridView.DefaultCellStyle.WrapMode = DataGridViewTriState.True;