私はMetroFrameworkを使ってwinformsアプリケーションを開発しています。フォームをプログラムでサイズ変更して、大きなオブジェクトを収めることができます。このために私はtabControl
オブジェクトのフレームワークからトグルを使用しています。フォームを大きくするとうまくいきますが、トグルを無効にするとフォームを縮小したくありません。あなたは私が知っているいくつかのテクニックを実験してきた見ることができるようにC#winformsのサイズ変更が正しく動作しない
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
プロパティを設定するときに値を使用することを拒否します...
私は何を見落としていますか?
Eeewh、herpiederp!私はそれが何か単純でなければならないことを知っていた:p魅力のように動作!ありがとうございました :) – MagicLegend