2012-03-16 131 views
0

我正面临着DataGridView组件的问题。 我知道DataGridView组件不能合并单元格!DataGridView合并单元格

有没有什么办法可以像上面的例子那样从两行中合并两个单元格?

 
    ************************** 
    * First Name | Last Name * 
    * ---------- |---------- * 
    *   | David * 
    * Smith |---------- * 
    *   | Anna  * 
    *------------|---------- * 
    * Michael | Daniel * 
    ************************** 

    etc. 

回答

0

请尽量做到这样,

 this.Paint += new PaintEventHandler(dataGridView1_Click); //Call event while loading 

     private void dataGridView1_Click(object sender, PaintEventArgs e) 
     { 
     Font fnt = new Font("Arial", 10, FontStyle.Bold, GraphicsUnit.Point); 
     Rectangle rct1 = new Rectangle((dataGridView1.GetColumnDisplayRectangle(0, true).X), (dataGridView1.GetColumnDisplayRectangle(0, true).Y + dataGridView1.Columns[0].HeaderCell.ContentBounds.Height + 8), dataGridView1.GetColumnDisplayRectangle(0, true).Width - 1, (dataGridView1.GetRowDisplayRectangle((dataGridView1.Rows.Count - 1), true).Top - dataGridView1.GetRowDisplayRectangle((dataGridView1.Rows.Count - 1), true).Height)); 
     // Create string to draw. 
     String drawString = "Sample Text"; 
     // Create font and brush. 
     Font drawFont = new Font("Arial", 16); 
     SolidBrush drawBrush = new SolidBrush(Color.Black); 
     // Create point for upper-left corner of drawing. 
     float x = 150.0F; 
     float y = 50.0F; 
     // Set format of string. 
     StringFormat drawFormat = new StringFormat(); 
     drawFormat.FormatFlags = StringFormatFlags.DirectionVertical; 
     // Draw string to screen. 

     e.Graphics.FillRectangle(Brushes.White, rct1); 
     e.Graphics.DrawString(drawString, drawFont, drawBrush, x, y, drawFormat); 
     Rectangle rct =new Rectangle(); 
     rct = dataGridView1.GetRowDisplayRectangle(3, true) 
     rct.Height -= 1; 
     SizeF s =new SizeF(); 
      s= e.Graphics.MeasureString("HORINZONTAL TEXT", dataGridView1.Font); 
     float lefts = (rct.Width/2) - (s.Width/2); 
     float tops = rct.Top + ((rct.Height/2) - (s.Height/2)); 
     e.Graphics.FillRectangle(Brushes.White, rct); 
     e.Graphics.DrawString("HORINZONTAL TEXT", fnt, Brushes.Black, 2, tops); 
     }