web-dev-qa-db-ja.com

解像度を変更してフォームコントロールを自動的にサイズ変更および調整する方法

一部のアプリケーションでは、コントロールの位置を変更して解像度を可能な限り調整することに気付きました。ウィンドウが最大化されると、GUI全体でバランスが取れるように設定されます。私の質問は、Visual Studio 2010 C#でこの機能を作成または実装することは可能ですか?

44
Afnan Bashir

Dock および Anchor プロパティを使用します。 こちら は良い記事です。これらは、最大化/最小化するときに変更を処理することに注意してください。これは、画面の解像度が変更された場合と少し異なりますが、同じ考え方に沿ったものになります。

61
SwDevMan81

これらの組み合わせを使用して、目的の結果を取得します。

  1. AnchorプロパティをNoneに設定すると、コントロールのサイズは変更されず、位置が移動するだけです。

  2. AnchorプロパティをTop + Bottom + Left + Rightに設定すると、コントロールのサイズが変更されますが、位置は変更されません。

  3. をセットする Minimum Sizeを適切な値に変換します。

  4. Dockプロパティを設定します。

  5. つかいます Form Resize好きなものを変更するイベント

(1)-(4)でフォントサイズ(ラベル、テキストボックス、コンボボックスなど)がどのように影響を受けるかはわかりませんが、(5)で制御できます。

19
Bhaskar
float widthRatio = Screen.PrimaryScreen.Bounds.Width / 1280;
float heightRatio = Screen.PrimaryScreen.Bounds.Height / 800f;
SizeF scale = new SizeF(widthRatio, heightRatio);
this.Scale(scale);
foreach (Control control in this.Controls)
{
control.Font = new Font("Verdana", control.Font.SizeInPoints * heightRatio * widthRatio);
}
10

..そしてそれを処理するための解像度の変化を検出するために(一度、SwDevMan81のようなドッキングとアンカーを使用することをお勧めします) SystemEvents.DisplaySettingsChangedイベント in Microsoft.Win32 を使用します。

2

ここでは https://www.netresize.net/index.php?c=3a&id=11#buyopt を使用します。ただし、有料版です。

また、1サイトライセンス(無制限の開発者)を購入すると、ソースコードを取得できます。

どのように私はnugetパッケージソリューションを見つけていますか。

0
Zin Min

フォームロードイベントでこの行を追加します

this.WindowState = FormWindowState.Maximized;
0
soldiershin