在我的一个表单中,一个 DataGridView 显示来自数据库的数据(当然数据数量即行数可能会变化)。数据库连接在表单载入事件中进行。我无法弄清楚如何根据所显示的行数自动调整整个 DataGridView 的高度。
在我的一个表单中,一个 DataGridView 显示来自数据库的数据(当然数据数量即行数可能会变化)。数据库连接在表单载入事件中进行。我无法弄清楚如何根据所显示的行数自动调整整个 DataGridView 的高度。
这是我找到的内容,目前运行良好:
int GetDataGridViewHeight(DataGridView dataGridView)
{
var sum = (dataGridView.ColumnHeadersVisible ? dataGridView.ColumnHeadersHeight : 0) +
dataGridView.Rows.OfType<DataGridViewRow>().Where(r => r.Visible).Sum(r => r.Height);
return sum;
}
// This is in a user control where the datagrid is inside (Top docked)
protected override void OnResize(EventArgs e)
{
if (AutoSize)
{
var height = this.GetDataGridViewHeight(this.dataBoxGridView);
this.dataBoxGridView.Height = height;
this.Height = height +this.Padding.Top + this.Padding.Bottom;
}
}
我还没有尝试直接从DataGridView构建自定义控件来实现这一点。
private int dataGridViewHeight()
{
int sum = this.dataGridViewName.ColumnHeadersHeight;
foreach (DataGridViewRow row in this.dataGridViewName.Rows)
sum += row.Height + 1; // I dont think the height property includes the cell border size, so + 1
return sum;
}