为什么在显示或加载事件时我的表单没有正确调整大小?

时间:2014-05-22 10:50:34

标签: c# winforms resize window-resize

我有一张表格:

DataGrid
SaveButton
CancelButton

将一个定位在另一个之下。当表单显示并调整大小时,我会调用以下方法:

private void resize(object sender, EventArgs e)
        {
            int totalRowHeight = thresholdsDataGridView.ColumnHeadersHeight;

            foreach (DataGridViewRow row in thresholdsDataGridView.Rows)
                totalRowHeight += row.Height;

            thresholdsDataGridView.Height = totalRowHeight; 
            this.Height = totalRowHeight + closeButton.Height + saveChangesButton.Height;
        } 

这在调整大小时效果很好,但在显示时它没有添加足够的高度(底部按钮未显示)。有人可以对此有所了解吗?

所需结果的屏幕截图:

enter image description here

1 个答案:

答案 0 :(得分:-1)

似乎你把每一个控制都放在了彼此之上。要使此设计更简单,请设置:

按钮的锚点:“Bottom,Left,Right”和DataGridView的锚点:设计师的“Top,Bottom,Left,Right”

然后将此变量添加到表单的类“root:

int originalHeight;

在表单的构造函数中设置“originalHeight”:

originalHeight = this.Height;

然后每次添加新行时,请运行:

private void resize(object sender, EventArgs e)
{
   int rowsHeight = thresholdsDataGridView.Rows.GetRowsHeight(DataGridViewElementStates.Visible);
   this.Height = originalHeight + rowsHeight;
}