Option 1 - Override GetPreferredSize
GetPreferredSize DataGridView new Size(this.Width, proposedSize.Height). , , :
using System.Drawing;
using System.Windows.Forms;
public class MyDataGridView : DataGridView
{
public override Size GetPreferredSize(Size proposedSize)
{
return base.GetPreferredSize(new Size(this.Width, proposedSize.Height));
}
}
2 -
DataGridView, , GetPreferredSize new Size(0, 0), DataGridView , , DataGridView. RowsAdded, RowsRemoved, , :
void AutoHeightGrid(DataGridView grid)
{
var proposedSize = grid.GetPreferredSize(new Size(0, 0));
grid.Height = proposedSize.Height;
}
private void Form1_Load(object sender, EventArgs e)
{
dataGridView1.RowsAdded += (obj, arg) => AutoHeightGrid(dataGridView1);
dataGridView1.RowsRemoved += (obj, arg) => AutoHeightGrid(dataGridView1);
}
, , Font, , Paint.
3 - MaximumSize
, , DataGridView, MaximumSize . new Size(this.dataGridView1.Width, 0):
dataGridView1.MaximumSize = new Size(this.dataGridView1.Width, 0);
dataGridView1.AutoSize = true;
MaximumSize , , 1 2.