DataGridView 合并
DataGridView 行合并和列合并谁在例子? --------------------编程问答-------------------- 什么样的合并结果? --------------------编程问答-------------------- 行合并,就是把DataGridview2没一行添加到DataGridView1中就是了,一个循环不就搞定了?列合并要麻烦点,先用.Columns.Add 添加列,然后再修改行的值就是了。 --------------------编程问答-------------------- 先写给你合并的代码
--------------------编程问答-------------------- 上面是行合并,列合并,我试试看,== --------------------编程问答-------------------- 列合并的代码
For i As Integer = 1 To DataGridView2.Rows.Count
Dim r As DataGridViewRow
r = DataGridView2.Rows(0)
DataGridView2.Rows.Remove(r)
DataGridView1.Rows.AddRange(r)
Next i
--------------------编程问答-------------------- 我測試你的行合并了,你的代易做图不對啊!
For i As Integer = 1 To DataGridView2.Columns.Count
Dim c As DataGridViewColumn
c = DataGridView2.Columns(i - 1)
DataGridView1.Columns.Add(c.Name, c.HeaderText)
For j As Integer = 1 To DataGridView2.Rows.Count
DataGridView1.Rows(j - 1).Cells(DataGridView2.Columns.Count + i - 1).Value = DataGridView2.Rows(j - 1).Cells(i - 1).Value
Next
Next
DataGridView2.Rows.Remove(r)
測試通不過啊! --------------------编程问答-------------------- 如果你是2003有可能通不过,那你就一个单元一个单元添加,这是2005中测试通过的代码,合并行就是循环一次,添加一下就完了,自己写也很简单,而且合并列的代码稍微改一下就是合并行的了。 --------------------编程问答-------------------- 像这样的图 --------------------编程问答-------------------- llsus我用VB2005測試你的代易做图也是實現不了樓主的要求。 --------------------编程问答-------------------- http://www.cnblogs.com/wxj1020/archive/2008/03/17/1109680.html
樓主參考一下。 --------------------编程问答-------------------- 这个控件功能这么强就是不提供直接使用合并 --------------------编程问答-------------------- 列单元格合并.这里给出了具体的思路,你修改下估计能行了,行也是一样的道理,对多列就是作个循环
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;
}
}
}
}
--------------------编程问答-------------------- 关注。 --------------------编程问答-------------------- llsus 楼主可否发个更详细一点代码.我试了无法达到你发的图片的效果. --------------------编程问答-------------------- 關注 --------------------编程问答-------------------- For i As Integer = 1 To DataGridView2.Rows.Count
Dim r As DataGridViewRow
r = DataGridView2.Rows(0)
DataGridView2.Rows.Remove(r)
DataGridView1.Rows.AddRange(r)
Next i
--------------------编程问答--------------------
晕,我理解错你的意思了。 --------------------编程问答-------------------- 楼主说的我不会。
补充:.NET技术 , VB.NET