Datagridview連結セル
ずっとdatagridviewをレポートのスタイルにしたいと思っていましたが、セルをマージしなければなりませんでしたが、以前の知識があまり使われていなかったことに気づき、王にはこのようなソースが少なくなりました.もし皆さんが必要なら、直接コピーして貼ればいいです.スタイルはとてもきれいです.
private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
if (dataGridView1.Rows.Count > 0)
{
if (dataGridView1.Rows[0].Cells[0].Value.ToString().Trim() != string.Empty)
{
try
{
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
#region MyRegion
if (dataGridView1.Columns[i].Index == e.ColumnIndex && e.RowIndex >= 0)
{
using (
Brush gridBrush = new SolidBrush(dataGridView1.GridColor),
backColorBrush = new SolidBrush(e.CellStyle.BackColor))
{
using (Pen gridLinePen = new Pen(gridBrush))
{
//
e.Graphics.FillRectangle(backColorBrush, e.CellBounds);
if (e.RowIndex != dataGridView1.RowCount - 1)
{
if (e.Value.ToString() != dataGridView1.Rows[e.RowIndex + 1].Cells[e.ColumnIndex].Value.ToString())
{
e.Graphics.DrawLine(gridLinePen, e.CellBounds.Left, e.CellBounds.Bottom - 1,
e.CellBounds.Right - 1, e.CellBounds.Bottom - 1);//
}
}
else
{
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, //x1,y1,x2,y2
e.CellBounds.Top, e.CellBounds.Right - 1,
e.CellBounds.Bottom - 1);
#region MyRegion
if (e.RowIndex == 0)
{
//
if (e.Value != null)
{
e.Graphics.DrawString((String)e.Value, e.CellStyle.Font,
Brushes.Crimson,
e.CellBounds.X + (e.CellBounds.Width - e.Graphics.MeasureString(e.Value.ToString().Trim(), e.CellStyle.Font).Width) / 2,
e.CellBounds.Y + 2, StringFormat.GenericDefault);
}
}
else
{
if (e.Value.ToString() != dataGridView1.Rows[e.RowIndex - 1].Cells[e.ColumnIndex].Value.ToString())
{
//
if (string.IsNullOrEmpty(e.Value.ToString().Trim()).Equals(false))
{
e.Graphics.DrawString((String)e.Value, e.CellStyle.Font,
Brushes.Crimson, e.CellBounds.X + (e.CellBounds.Width - e.Graphics.MeasureString(e.Value.ToString().Trim(), e.CellStyle.Font).Width) / 2,
e.CellBounds.Y + 2, StringFormat.GenericDefault);
}
}
}
#endregion
e.Handled = true;
}
}
}
#endregion
}
}
catch { }
}
}
}
/// <summary>
///
/// </summary>
public void addDatatable()
{
DataColumn dc = new DataColumn("ID");
dt.Columns.Add(dc);
dc = new DataColumn("name");
dt.Columns.Add(dc);
dc = new DataColumn("age");
dt.Columns.Add(dc);
dc = new DataColumn("sex");
dt.Columns.Add(dc);
dt.Rows.Add(2, " ", "5000", "7000");
dt.Rows.Add(2, " ", "3000", "5600");
dt.Rows.Add(3, " ", "6000", "8600");
dt.Rows.Add(3, " ", "8000", "9000");
dt.Rows.Add(4, " ", "7000", "8800");
}