Ich arbeite an einer Winforms-Anwendung mit MetroFramework. Ich möchte das Formular programmgesteuert so ändern, dass ein größeres Objekt darauf passt. Dazu benutze ich einen Toggle aus dem Framework in einemObjekt. Das Formular größer zu machen, funktioniert gut, aber wenn ich den Schalter deaktiviere, möchte ich das Formular nicht verkleinern.C# Ändern der Winforms funktioniert nicht richtig
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);
}
}
Wie Sie sehen Ich habe mit einigen Techniken zu experimentieren, die ich kenne, nur um es zu versuchen und meinen Weg von dort zurück, aber es scheint nicht zu funktionieren. Dies erscheint mir seltsam, da die erste Methode (this.Size
) funktioniert, wenn man die Form vergrößert. Das Schlüsselwort this
bezieht sich auf die Form
nach Visual Studio. Es scheint nicht zu versuchen, die tabControl
Größe zu ändern, weil ich das auf der rechten Seite gebunden habe und richtig mit der rechten Grenze einhergeht.
Das Protokoll für die this.Size
wird den großen Wert zurückgeben, der in meinem Fall {Width=834, Height=354}
ist.
Ich habe versucht, die Anfangswerte in einer Size
Variable zu speichern und es von dort wiederherzustellen (da es für die Größenänderung durch den Benutzer Rechnung tragen würde), aber das scheint nicht richtig zu funktionieren.
Size oldSize; //Global variable
private void initialize()
{
oldSize = new Size(this.Width, this.Height);
Console.WriteLine(oldSize);
}
this.Size = oldSize; //In the eventhandler
Das Protokoll wird den richtigen Wert zurück, der {Width=534, Height=354}
in meinem Fall ist. Aber es weigert sich, den Wert zu verwenden, wenn die this.Size
Eigenschaft wieder eingestellt wird ...
Was übersehe ich?
Eeewh, herpiederp! Ich wusste, dass es etwas Einfaches sein musste: p Funktioniert wie ein Zauber! Vielen Dank :) – MagicLegend