I was able to show my 43 dynamic columns in datagridview in c# vertically left to right bottom-up,but during printing I was not able to print it has I have shown it in datagridview.
strFormat1.FormatFlags = StringFormatFlags.DirectionVertical;
By using the above line, it prints right to left and top to bottom, which is difficult to read.
My question is how to print from left to right vertical headings.
To show in gridview I have used the below code:-
DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing;
DataGridView1.ColumnHeadersHeight = 50;
DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader;
DataGridView1.CellPainting += new DataGridViewCellPaintingEventHandler(DataGridView1_CellPainting);</pre>
private void DataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
if (e.RowIndex == -1 && e.ColumnIndex >= 0)
{
e.PaintBackground(e.ClipBounds, true);
Rectangle rect = this.DataGridView1.GetColumnDisplayRectangle(e.ColumnIndex, true);
Size titleSize = TextRenderer.MeasureText(e.Value.ToString(), e.CellStyle.Font);
if (this.DataGridView1.ColumnHeadersHeight < titleSize.Width)
{
this.DataGridView1.ColumnHeadersHeight = titleSize.Width;
}
e.Graphics.TranslateTransform(0, titleSize.Width);
e.Graphics.RotateTransform(-90.0F);
e.Graphics.DrawString(e.Value.ToString(), this.Font, Brushes.Black, new PointF(rect.Y - (sbsDataGridView1.ColumnHeadersHeight - titleSize.Width), rect.X));
e.Graphics.RotateTransform(90.0F);
e.Graphics.TranslateTransform(0, -titleSize.Width);
e.Handled = true;
}
}
For printing :-
foreach (DataGridViewColumn GridCol in DataGridView1.Columns)
{
e.Graphics.FillRectangle(new SolidBrush(Color.LightGray),
new Rectangle((int)arrColumnLefts[iCount], iTopMargin,
(int)arrColumnWidths[iCount], iHeaderHeight));
e.Graphics.DrawRectangle(Pens.Black,
new Rectangle((int)arrColumnLefts[iCount], iTopMargin,
(int)arrColumnWidths[iCount], iHeaderHeight));
e.Graphics.DrawString(GridCol.HeaderText, GridCol.InheritedStyle.Font,
new SolidBrush(GridCol.InheritedStyle.ForeColor),
new RectangleF((int)arrColumnLefts[iCount], iTopMargin,
(int)arrColumnWidths[iCount], iHeaderHeight), strFormat1);
iCount++;
}
private void printDocument1_BeginPrint(object sender, PrintEventArgs e)
{
try
{
iRow = 0;
strFormat1 = new StringFormat();
strFormat1.Alignment = StringAlignment.Near;
strFormat1.LineAlignment = StringAlignment.Center;