在DataGridView c#winform中拉伸行以填充整个高度

时间:2016-03-01 12:10:55

标签: c# winforms datagridview

我在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");

1 个答案:

答案 0 :(得分:1)

我认为这可能是由AutoSizeRowsMode属性引起的。例如,当它设置为AllCells时,行将自动调整大小以适合单元格内容(无论您在代码中如何定义或设置它)。

将其设置为None可能会解决您的问题。

dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None;

在编写您想要的行为时,以下文档可能对您有用:Sizing Options in the Windows Forms DataGridView Control