C#自动将表单调整为DataGridView的大小

aki*_*kif 9 c# forms resize datagridview

我有一个Form和一个DataGridView.我在运行时填充DataGridView,所以我想知道如何根据DataGridView的大小动态调整Form的大小?有什么样的财产或方法吗?或者我是否必须自己确定尺寸并相应更新?

Art*_*tru 6

您可以通过计数列宽度找到实际宽度.

不要忘记您的表单可能更复杂,您应该计算其他控件.

public class YourForm : Form
{
    public YourForm()
    {
        DataGridView _dgv = new DataGridView() { Dock = DockStyle.Fill};
        Controls.Add(_dgv);
    }
    public void CorrectWindowSize()
    {
        int width = WinObjFunctions.CountGridWidth(_dgv);
        ClientSize = new Size(width, ClientSize.Height);
    }
    DataGridView _dgv;
}

public static class WinObjFunctions
{
    public static int CountGridWidth(DataGridView dgv)
    {
        int width = 0;
        foreach (DataGridViewColumn column in dgv.Columns)
            if (column.Visible == true)
                width += column.Width;
        return width += 20;
    }
}
Run Code Online (Sandbox Code Playgroud)


Mus*_*sis 3

通常,控件会根据包含窗体的大小调整其大小。要将表单的大小调整为 DataGridView 的大小,您必须自己确定大小,然后设置表单的大小以匹配,记住要考虑表单的菜单条和/或工具栏所需的额外大小,状态栏或其他控件。

在您的情况下,最好不要调整表单大小以匹配网格视图控件。最有可能的是,网格视图中的行数超出了 Windows 屏幕的容纳范围,并且您不希望窗体延伸到可视桌面区域下方。一般来说,这种情况正是您希望拥有可滚动网格视图的原因 - 用于查看一次屏幕无法容纳的更多数据。

  • “要将表单的大小调整为 DataGridView 的大小,您必须自己确定大小”请问有办法做到这一点吗?我的 DataGridView 只有几个单元格,并且它是只读的。调整表单大小以适应完全没有问题,只是我不知道 DGV 需要多少像素。非常感谢。 (2认同)