これは、私の前の質問「フォントに依存するコントロールの配置」のフォローアップです。これは、おそらく私が尋ねていたものとは異なる方法で、その質問の背後にある実際の問題を解決する試みです。
問題の説明の例: 「読み込み後に<X> <Y>で価格を調整する」というチェックボックスが必要です。ここで、 <X>は数値です---で調整可能ですNumericUpDown
---そして<Y>は「パーセント」です「または「ドル」。選択は。によって行われComboBox
ます。これは1行になります。
複雑さ:レイアウトを台無しにすることなく、これらすべてのコントロールのフォントを変更できるようにしたい(基本的にSystem.Drawing.Fonts.MessageBoxFont
は、Windows XP/etcではTahoma8pt、VistaではSegoe UI 9 ptに設定)。私の現在のPosition
-property--settingパラダイムは機能しません。
より一般的には、 <X> NumericUpDown
が "by"と<Y> ComboBox
の間のスペースにぴったりと収まり、同様に<X> ComboBox
が収まるように、コントロールをフォントに依存しない方法で動的に配置する必要があります。 <X> CheckBox
とその右側の「ロード後」の文字列に関して。
誰もが見逃しているように見える部分:これはすべて。内にネストされていCheckBox
ます。したがって、理想的には、「読み込み後」という単語をクリックしてチェックボックスをオン/オフにし、「読み込み後に価格を調整する」の周りに小さなハイライトの長方形を描画する必要があります。したがって、最後に余分なものを叩くだけLabel
では機能しません。これは、CheckBox
;を切り替えないためです。Label
同様に、そのようなイベントをフックしてバンドエイドを試みてもClick
、目的のハイライト長方形は生成されません。
ソリューション?この時点で私は次のいずれかを考えています:
どういうわけか、2つの別々のテキスト行のような醜い解決策で問題を再考してください:「ロード後に見つかった価格を調整する」(
CheckBox
)、「調整量:」(NumericUpDown
およびComboBox
)。私のオプションボックスはこのタイプ(つまり、例のタイプ)のオプションで完全にいっぱいであるため、これは本当に悪いことです。したがって、垂直方向のサイズは少なくとも2倍になります。ある種のカスタムコントロール?
SplittableCheckBox
?コントロール付きのある種の魔法
TableLayout
?(これは「誰もが見逃しているように見える部分」で失敗することは間違いありません。)諦めてMSSansSerifに戻るか、Tahomaを均一に使用するか、Segoe UIをアプリケーションにパッケージ化して、システムのデフォルトフォントを無視します。
(新規、編集経由)誰かがこのシナリオを正確にサポートしていると私に納得させることができる場合は、WPFに切り替えます。