C#调整winforms格式无法正常运行

时间:2017-01-05 10:38:28

标签: c# winforms

我正在使用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行)在使表单更大时确实有效。根据Visual Studio,this关键字指的是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属性时拒绝使用该值...

我有什么看法?

1 个答案:

答案 0 :(得分:3)

放大表单时,将MinimumSize设置为当前大小 - 但是当你将其缩小时,尝试重置大小,同时仍然设置MinimumSize - 因此表单不会调整大小。

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