2

画面を最大化するときや解像度を変更するときに、windowsFrom ですべてを自動的にスケーリングする方法はありますか。

これは手動スケールで正しいことがわかりましたが、解像度を切り替えるときは毎回変更する必要があります。

this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
4

1 に答える 1

3

これを自動的に行うために押すことができる簡単なスイッチはありません。自動スケーリングは、非常に異なる問題を解決するためのものです。この設計目標を念頭に置いて、フォームとそのコントロールをレイアウトする必要があります。

特に、これを行う最善の方法は、ドッキングされたTableLayoutPanelコントロールを使用してフォーム全体を「埋める」ことです。そのDockプロパティを に設定しますDockStyle.Fill。これは基本的に、フォームに表示する子コントロールをレイアウトするために使用する「レイアウト グリッド」になります。

次に、通常の各コントロールをそのTableLayoutPanelコントロールの「セル」内に配置します。Anchor子コントロールのプロパティを設定して、フォームが展開された (または縮小された) ときに子コントロールがどのように拡大するかを示します。例えば:

  • フォームが最大化されたときにコントロールを水平方向に大きくしたい場合は、コンテナー セルの左端と右端に固定します。
  • 垂直方向に拡大するには、セルの上端と右端に固定します。
  • すべてのエッジに固定すると、すべての方向に成長して大きくなります。
  • どの辺にも固定しない場合、コントロールは同じサイズのままで、セルの中央に配置されます。

これを正しく行うには、少し手間がかかります。たとえば、特にフォームに表示される他のコントロールとの関係で、コントロールが希望どおりに配置されるように、コントロール内でコントロールのand/orプロパティを設定する必要がある場合があります。ColumnSpanRowSpanTableLayoutPanel

しかし、それはあなたが望むことを行うためのほぼ唯一の方法であり、一度セットアップすると非常にうまく機能します.

于 2012-05-05T12:38:51.450 に答える