Merge columns headers of RightToLeft Datagridview
Merging RightToleft Datagridview columns headers is almost the same thing as merging in LeftToRight Datagridview.
In this tutorial we want to merge columns indexed 0, 1, and 2. since RightToLeft property is enabled, in Paint method of the Datagridview, drawing rectangle starts from the column indexed 2. So the code will be like this:
And in Form_Load event:
And of course set the property ColumnHeadersHeightSizeMode of the Datagridview to EnableResizing.
Finally copy and past this code:
The Datagridview would be like:
In this tutorial we want to merge columns indexed 0, 1, and 2. since RightToLeft property is enabled, in Paint method of the Datagridview, drawing rectangle starts from the column indexed 2. So the code will be like this:
private void dataGridView1_Paint(object sender, PaintEventArgs e)
{
Rectangle r1 = dataGridView1.GetCellDisplayRectangle(2, -1, true);
int w2 = dataGridView1.GetCellDisplayRectangle(1, -1, true).Width;
int w3 = dataGridView1.GetCellDisplayRectangle(0, -1, true).Width;
r1.X += 1;
r1.Y += 1;
r1.Width = r1.Width + w2 + w3;
r1.Height = r1.Height / 2 - 2;
e.Graphics.FillRectangle(new SolidBrush(dataGridView1.ColumnHeadersDefaultCellStyle.BackColor), r1);
StringFormat format = new StringFormat();
format.Alignment = StringAlignment.Center;
format.LineAlignment = StringAlignment.Center;
e.Graphics.DrawString("Merged Text", dataGridView1.ColumnHeadersDefaultCellStyle.Font,
new SolidBrush(dataGridView1.ColumnHeadersDefaultCellStyle.ForeColor), r1, format);
}
And in Form_Load event:
dataGridView1.ColumnHeadersHeight = dataGridView1.ColumnHeadersHeight * 2;
dataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomCenter;
dataGridView1.CellPainting += new DataGridViewCellPaintingEventHandler(dataGridView1_CellPainting);
dataGridView1.Paint += new PaintEventHandler(dataGridView1_Paint);
dataGridView1.Scroll += new ScrollEventHandler(dataGridView1_Scroll);
dataGridView1.ColumnWidthChanged += new DataGridViewColumnEventHandler(dataGridView1_ColumnWidthChanged);
And of course set the property ColumnHeadersHeightSizeMode of the Datagridview to EnableResizing.
Finally copy and past this code:
private void dataGridView1_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e)
{
Rectangle rtHeader = dataGridView1.DisplayRectangle;
rtHeader.Height = dataGridView1.ColumnHeadersHeight / 2;
dataGridView1.Invalidate(rtHeader);
}
private void dataGridView1_Scroll(object sender, ScrollEventArgs e)
{
Rectangle rtHeader = dataGridView1.DisplayRectangle;
rtHeader.Height = dataGridView1.ColumnHeadersHeight / 2;
dataGridView1.Invalidate(rtHeader);
}
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;
}
}
The Datagridview would be like:
Merge columns headers of RightToLeft Datagridview
Reviewed by Bloggeur DZ
on
02:07
Rating:
Aucun commentaire: