Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 调整MDI子对象中的控件大小_C#_Resize_Mdi - Fatal编程技术网

C# 调整MDI子对象中的控件大小

C# 调整MDI子对象中的控件大小,c#,resize,mdi,C#,Resize,Mdi,我有一个mainform,其中包含一个面板,其中显示不同的MDI子窗体。MDI子控件中的控件获得了要调整大小的锚点=左、右、上、下。 问题在于调整主窗体大小时MDI子窗体中控件的大小。我用以下代码实现了它: private void MainForm_Resize(object sender, EventArgs e) { foreach (Form f in panel.Controls.OfType<Form>()) {

我有一个mainform,其中包含一个面板,其中显示不同的MDI子窗体。MDI子控件中的控件获得了要调整大小的锚点=左、右、上、下。 问题在于调整主窗体大小时MDI子窗体中控件的大小。我用以下代码实现了它:

    private void MainForm_Resize(object sender, EventArgs e)
    {
        foreach (Form f in panel.Controls.OfType<Form>())
        {
            f.WindowState = FormWindowState.Minimized;
            f.WindowState = FormWindowState.Maximized;
        }
    }
private void MainForm\u Resize(对象发送方,事件参数e)
{
foreach(panel.Controls.OfType()中的表单f)
{
f、 WindowState=FormWindowState.Minimized;
f、 WindowState=FormWindowState.Maximized;
}
}

问题是,当您调整大小时,MDI子控件中的控件会永久更改其位置。有什么方法可以调用调整大小的方法吗?

对于那些遇到相同问题的人:
您需要将MDI子级的Dock属性设置为DockStyle.Fill。否则它就不会调整控件的大小。

您的代码毫无意义。听起来您不应该一开始就使用MDI,因为您的“表单”被用作面板中的控件。设置锚应该足够好。你是对的,这只是一个暂时的解决方案没有任何意义。但是我有大约100个不同的表单要显示在面板中,所以我开始使用MDI子项。有没有更好的方法可以做到这一点?不清楚为什么anchor属性不起作用(或者只是Dock.Fill)。一次显示100个不同的表单?问题是MDI子级不会更改其大小。那么,为什么锚属性会起作用呢?100个不同的表单不会同时显示,但仍在同一面板中。根据您发布的代码,您的表单不是真正的表单。在这些表单中,您必须具有TopLevel=false,因为它们都是属于panel.controls集合的子控件。确保将边框样式设置为“无”。