[英]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.