件名:子のデザイナーコードより親コントロールのプロパティを優先させる(Insider.NET会議室)より:
ボタンクラスを継承して親ユーザーコントロールを作成し、
親ユーザーコントロールを継承して、子ユーザーコントロールを複数作成しています。
親には、フォントサイズやボタンサイズを設定し、
全ての画面で、ボタンレイアウトの統一をしたいと思い
この実装方法を試みています。
件名:フォントサイズの相違(Insider.NET会議室)より:
このたびVS2003上で作成していたプロジェクトをVS2005に移行する作業を行いました。その結果、同じフォントサイズを指定していても各環境で実際の文字サイズがバラバラという現象が起こっており苦労しています。
コントロールが描画されるときに使われるフォントは、そのコントロールのプロパティを設定していない場合、コントロールのコンテナとなっているコントロールから引き継がれます。
Form に Panel を置き、その上に Button を置いたとします。Button.Font を設定していなければ、Panel.Font が使われます。Panel.Font が設定されていなければ Form.Font が使われます。Form.Font が設定されていなければ、システムのデフォルト フォントが使われます。
ということで続けようと思ったのだけど、なんだか違う。どうも、開発環境で、IDE を立ち上げたときに設定されているデフォルト フォントを読み込んで、それを使用するようだ。解像度の変更には追従してくれるけど(OS 再起動だもんね)、フォントの変更には追従してくれない。う~ん、困った。ドキュメントに書いてあることと、微妙に違うような気がするぞ?
そんなわけで、もう少し調べてから再挑戦します。
で、希望だけ先に。
CSS のように、相対的な大きさを指定できるプロパティ、Font とは独立した FontDecoration プロパティが欲しいですね。
Control.Font プロパティは不変なので、まるまる入れ替える必要があります。アプリケーション起動中に画面の詳細設定を変更されたときなどにも対応できるように、「基準となるフォント ファミリーとサイズ」を供給するもの(DefaultFont プロパティ)と、それに対する修飾という分け方がしてあったらよかったのかも知れません。
あ...ボールドやイタリックは、フォントの中に定義されているのだった(メイリオの日本語は斜字体が定義されていないので表示されない)。
投稿日時 : 2008年1月19日 22:07