WinForms の自動スケーリングの制限事項と設計ガイドライン
WinForms の自動スケーリング機能により、動的なフォントや DPI 設定に合わせてフォーム要素のサイズを柔軟に変更できます。ただし、正しく実装するには、特定の制限を認識する必要があります。
自動スケーリングのサポートが不足しているコントロール
- AutoSize を False に設定し、フォントのラベルを継承します
- ListView の列幅
- SplitContainer のPanel1MinSize、Panel2MinSize、および SplitterDistance プロパティ
- MultiLine を True に設定し、Font の TextBox を継承します
- ToolStrip.AutoSize と ToolStrip.ImageScalingSize を明示的に設定せずに、ToolStrip 画像を削除します
- SizeMode が Zoom または StretchImage 以外の PictureBox に設定されている
- ImageList.ImageSize が設定されていない TreeView 画像
- 固定サイズのウィンドウには手動によるスケーリングが必要です
コア設計ガイドライン
-
一貫した AutoScaleMode: すべての ContainerControl は同じ AutoScaleMode = Font を使用する必要があります。
-
Uniform AutoScaleDimensions: すべての ContainerControls では、96dpi を想定して、AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F) を使用します。
-
96dpi 設計環境: AutoScaleDimensions の手動再計算を避けるために、96dpi 環境で設計作業を完了してください。
-
アプリケーション スコープのフォント: 必要に応じて、最上位のフォームにフォントを設定し、それに応じて AutoScaleDimensions を調整します。
-
コントロールとの位置合わせを避ける: 位置決めにはパネルまたは他のコンテナを使用します。
-
自動レイアウトの一時停止と再開: 動的コントロールの追加の場合は、自動スケーリングを確実にするためにレイアウトを一時停止して再開します。
-
基本クラスから AutoScaleMode を継承します: 派生 ContainerControls は AutoScaleMode を Inherit に設定したままにする必要があります。
-
実行時に固定サイズを使用する: スケーリングの問題を防ぐために、デザイナーではなくフォームのコンストラクターまたは OnLoad で MinSize と MaxSize を設定します。
-
パネルでの混合配置を検討してください: 同じパネルでアンカーとドッキングを混合すると、自動スケーリングに影響を与える可能性があります。
-
画面サイズの制限: 特に Windows タイトル バーの高さを考慮して、フォーム サイズが画面の上限内にあることを確認してください。
以上が一般的な落とし穴を回避しながら、WinForms の自動スケーリングを効果的に利用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。