我在DataGridView
我有一个DataGridView
,我填写了DataSource
稍后我想输出一个位图,因为我希望我的列和行填满整个可用空间
使用列,我只是使用(它工作正常)
foreach (DataGridViewColumn col in DG_dataGridView.Columns)
{
col.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
}
我的问题,我无法对行做同样的事情
这是我的代码
//columns stretching
foreach (DataGridViewColumn col in DG_dataGridView.Columns)
{
col.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
}
var printSet = printDocument1.DefaultPageSettings;
DG_dataGridView.Height = printSet.Bounds.Height;
int headerHeight = DG_dataGridView.ColumnHeadersHeight;
int height = DG_dataGridView.Size.Height - headerHeight;
int rowHeight = height / DG_dataGridView.RowCount; // -1;
//rows stretching
for (int i = 0; i < DG_dataGridView.Rows.Count; i++)
{
DG_dataGridView.Rows[i].Height = rowHeight;
}
Bitmap bm = new Bitmap(DG_dataGridView.Width, DG_dataGridView.Height);
DG_dataGridView.DrawToBitmap(bm, new Rectangle(0, 0, DG_dataGridView.Width, DG_dataGridView.Height));
bm.Save(System.IO.Directory.GetCurrentDirectory() + @"\latestBitTable.bmp");
答案 0 :(得分:1)
我认为这可能是由AutoSizeRowsMode
属性引起的。例如,当它设置为AllCells
时,行将自动调整大小以适合单元格内容(无论您在代码中如何定义或设置它)。
将其设置为None
可能会解决您的问题。
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None;
在编写您想要的行为时,以下文档可能对您有用:Sizing Options in the Windows Forms DataGridView Control