Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.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# 调整子窗体的大小控制调整父窗体的大小_C#_.net_Winforms_.net 2.0 - Fatal编程技术网

C# 调整子窗体的大小控制调整父窗体的大小

C# 调整子窗体的大小控制调整父窗体的大小,c#,.net,winforms,.net-2.0,C#,.net,Winforms,.net 2.0,我试图找到一种简单的方法,根据父窗体的大小重新调整子窗体的大小。i、 e子窗体从父窗体(FixedTool窗口)弹出 为了做到这一点,目前我在form child类中通过一个OnParentResize事件来实现这一点。i、 e void OnParentResized(object sender, EventArgs e) { //Resize of the form shall be made only when the form is not min

我试图找到一种简单的方法,根据父窗体的大小重新调整子窗体的大小。i、 e子窗体从父窗体(FixedTool窗口)弹出

为了做到这一点,目前我在form child类中通过一个OnParentResize事件来实现这一点。i、 e

void OnParentResized(object sender, EventArgs e)
        {
            //Resize of the form shall be made only when the form is not minimized
            if (parent.WindowState != FormWindowState.Minimized)
            {
                int iWidth = parent.Size.Width;
                int iHeight = parent.Size.Height;

                double dXFactor = (double)iWidth / (double)this.Width;
                double dYFactor = (double)iHeight / (double)this.Height;
                this.Scale(new SizeF((float)dXFactor, (float)dYFactor)); 

            }
        }
此刻度线(新的SizeF((浮点)dXFactor,(浮点)dYFactor)); 缩放我的子窗体中的所有控件

当我使用它时,我假设每当父窗体调整大小时,我的子窗体也会调整大小。显然我在这里遇到了一个问题,子窗体中的所有控件都锚定在左上角

  • 最初,我的子窗体中的所有控件都是正常大小的

  • 调整父窗体的大小使其变小,子窗体也收缩到相同的因子

  • 现在,我将父窗体的大小增加回其原始大小。子窗体上控件的大小现在以更高的比率增加。而且这些控件看起来也不合适

  • 有谁能为这种情况提出更好的方法吗


    干杯

    我想你应该使用ClientRectangle的宽度和高度,而不是窗口的宽度和高度。因为客户端矩形比windows矩形小。这是一个初步猜测。

    将isMdiContainer中的Parent更改为true,将childform边框样式更改为none,然后

    在父窗体中,在您想要的地方编辑类似下面的代码

     foreach (var mdiChild in MdiChildren)
                    mdiChild.Close();
      var childobj= new childform {MdiParent = this, Dock = DockStyle.Fill};
         childobj.Show();
    
    编辑控件以通过定位特性进行定位


    希望它能对您有所帮助。

    您不能锚定您的子控件,使它们在所有方向上都能动态调整大小吗?不,即使我锚定在所有方向TLBR。我看到子窗体上的控件超出了正常大小。您如何订阅OnParentResized事件?在c中没有这样的事件#