程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> Windows Forms DataGridView中合並單元格

Windows Forms DataGridView中合並單元格

編輯:C#入門知識

Windows Forms DataGridView 沒有提供合並單元格的功能,要實現合並單元格的功能就要在CellPainting事件中使用Graphics.DrawLine和 Graphics.DrawString 自己來“畫”。
  下面的代碼可以對DataGridView第1列內容相同的單元格進行合並:         private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)         {             // 對第1列相同單元格進行合並             if (e.ColumnIndex == 0 && e.RowIndex != -1)             {                 using                     (                     Brush gridBrush = new SolidBrush(this.dataGridView1.GridColor),                     backColorBrush = new SolidBrush(e.CellStyle.BackColor)                     )                 {                     using (Pen gridLinePen = new Pen(gridBrush))                     {                         // 清除單元格                         e.Graphics.FillRectangle(backColorBrush, e.CellBounds);
                          // 畫 Grid 邊線(僅畫單元格的底邊線和右邊線)                         //   如果下一行和當前行的數據不同,則在當前的單元格畫一條底邊線                         if (e.RowIndex < dataGridView1.Rows.Count - 1 &&                         dataGridView1.Rows[e.RowIndex + 1].Cells[e.ColumnIndex].Value.ToString() !=                          e.Value.ToString())                             e.Graphics.DrawLine(gridLinePen, e.CellBounds.Left,                             e.CellBounds.Bottom - 1, e.CellBounds.Right - 1,                             e.CellBounds.Bottom - 1);                         // 畫右邊線                         e.Graphics.DrawLine(gridLinePen, e.CellBounds.Right - 1,                             e.CellBounds.Top, e.CellBounds.Right - 1,                             e.CellBounds.Bottom);
                          // 畫(填寫)單元格內容,相同的內容的單元格只填寫第一個                         if (e.Value != null)                         {                             if (e.RowIndex > 0 &&                             dataGridView1.Rows[e.RowIndex - 1].Cells[e.ColumnIndex].Value.ToString() ==                              e.Value.ToString())                             { }                             else                             {                                 e.Graphics.DrawString((String)e.Value, e.CellStyle.Font,                                     Brushes.Black, e.CellBounds.X + 2,                                     e.CellBounds.Y + 5, StringFormat.GenericDefault);                             }                         }                         e.Handled = true;                     }                 }             }

 

    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved