Datagrid events
This sample code will provide alphabets to columns being merged. You can also provide numbers. Sometimes we need to know column number as well to know in which column we are that time you can work with this code.
private void Test_Load(object sender, EventArgs e)
{
this.dataGridView1.Columns.Add("Colm1", "Win");
this.dataGridView1.Columns.Add("Colm2", "Loss");
this.dataGridView1.Columns.Add("Colm3", "Win");
this.dataGridView1.Columns.Add("Colm4", "Loss");
this.dataGridView1.Columns.Add("Colm5", "Win");
this.dataGridView1.Columns.Add("Colm6", "Loss");
this.dataGridView1.Columns.Add("Colm7", "Win");
this.dataGridView1.Columns.Add("Colm8", "Loss");
this.dataGridView1.Columns.Add("Colm9", "Win");
this.dataGridView1.Columns.Add("Colm10", "Loss");
for (int j = 0; j < this.dataGridView1.ColumnCount; j++)
{
this.dataGridView1.Columns[j].Width = 60;
}
this.dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing;
this.dataGridView1.ColumnHeadersHeight = this.dataGridView1.ColumnHeadersHeight * 2;
this.dataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter;
this.dataGridView1.CellPainting += new DataGridViewCellPaintingEventHandler(dataGridView1_CellPainting);
this.dataGridView1.Paint += new PaintEventHandler(dataGridView1_Paint);
this.dataGridView1.Scroll += new ScrollEventHandler(dataGridView1_Scroll);
this.dataGridView1.ColumnWidthChanged += new DataGridViewColumnEventHandler(dataGridView1_ColumnWidthChanged);
}
private void dataGridView1_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e)
{
Rectangle rtHeader = this.dataGridView1.DisplayRectangle;
rtHeader.Height = this.dataGridView1.ColumnHeadersHeight / 2;
this.dataGridView1.Invalidate(rtHeader);
}
private void dataGridView1_Scroll(object sender, ScrollEventArgs e)
{
Rectangle rtHeader = this.dataGridView1.DisplayRectangle;
rtHeader.Height = this.dataGridView1.ColumnHeadersHeight / 2;
this.dataGridView1.Invalidate(rtHeader);
}
private void dataGridView1_Paint(object sender, PaintEventArgs e)
{
string[] monthes = { "A", "B", "C", "D", "E" };
for (int j = 0; j < 10; )
{
Rectangle r1 = this.dataGridView1.GetCellDisplayRectangle(j, -1, true);
int w2 = this.dataGridView1.GetCellDisplayRectangle(j + 1, -1, true).Width;
r1.X += 1;
r1.Y += 25;
r1.Width = r1.Width + w2 - 2;
r1.Height = r1.Height / 2 - 2;
e.Graphics.FillRectangle(new SolidBrush(this.dataGridView1.ColumnHeadersDefaultCellStyle.BackColor), r1);
StringFormat format = new StringFormat();
format.Alignment = StringAlignment.Center;
format.LineAlignment = StringAlignment.Center;
e.Graphics.DrawString(monthes[j / 2],
this.dataGridView1.ColumnHeadersDefaultCellStyle.Font,
new SolidBrush(this.dataGridView1.ColumnHeadersDefaultCellStyle.ForeColor),
r1,
format);
j += 2;
}
}
private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
if (e.RowIndex == -1 && e.ColumnIndex > -1)
{
Rectangle r2 = e.CellBounds;
r2.Y += e.CellBounds.Height / 2;
r2.Height = e.CellBounds.Height / 2;
e.PaintBackground(r2, true);
e.PaintContent(r2);
e.Handled = true;
}
}