繁体   English   中英

C#调整Winform的大小无法正常工作

[英]C# Resizing winforms doesn't work properly

我正在使用MetroFramework开发Winforms应用程序。 我想以编程方式调整窗体的大小,以便可以在上面容纳较大的对象。 为此,我在tabControl对象中使用了来自框架的切换。 使窗体变大可以很好地工作,但是当我禁用切换时,它并不想缩小窗体。

private void tSynced_CheckedChanged(object sender, EventArgs e)
{
    if (tSynced.Checked)
    {
        //Sync enabled
        Console.WriteLine("Sync enabled");
        this.Size = new Size(this.Width + 300, this.Height);
        this.MinimumSize = new Size(this.Width, this.Height);
        this.MaximumSize = new Size(this.Width + 200, this.Height);
    } else
    {
        //Sync disabled
        Console.WriteLine("Sync disabled");
        this.Size = new Size(this.Width - 300, this.Height);
        this.Width = 534;
        Console.WriteLine(this.Size);
        this.MinimumSize = new Size(this.Width, this.Height);
        this.MaximumSize = new Size(this.Width, this.Height);
    }
}

如您所见,我一直在尝试一些我所知道的技术,只是想尝试一下然后再从那里回来,但这似乎行不通。 这对我来说似乎很奇怪,因为第一种方法( this.Size行)在使窗体变大时确实起作用。 this关键字是指根据Visual Studio的Form 它似乎并没有尝试调整tabControl大小,因为我将其绑定到了右侧,并正确地沿着右侧边框移动。

this.Size的日志将返回较大的值,本例中为{Width=834, Height=354}

我试过将初始值保存在Size变量中,然后从那里还原它(因为它会导致用户调整大小),但这似乎无法正常工作。

Size oldSize; //Global variable
private void initialize()
{
    oldSize = new Size(this.Width, this.Height);
    Console.WriteLine(oldSize);
}

this.Size = oldSize; //In the eventhandler

在我的情况下,日志将返回正确的值,即{Width=534, Height=354} 但是当再次设置this.Size属性时,它拒绝使用该值。

我在俯视什么?

放大表单时,可以将MinimumSize设置为当前大小-但是当您缩小它时,请尝试在设置MinimumSize的同时重置Size-这样表单就不会重新调整大小。

您需要做的就是在更改大小之前重置MinimumSize。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM