【发布时间】:2017-01-05 10:38:28
【问题描述】:
我正在使用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属性时拒绝使用该值...
我忽略了什么?
【问题讨论】: