- PR -

フォントの変更

1
投稿者投稿内容
どら
ベテラン
会議室デビュー日: 2004/08/18
投稿数: 63
投稿日時: 2006-07-04 13:20
いつもお世話になっております。

早速ですが、フォント変更で質問があります。

フォントダイアログを使い、それに伴うフォントサイズ、書体を画面のテキスト、コンボなど、画面すべてのコントロールに反映させてたいのですが、プロパティなどで、フォントを変更しているコントロールは、変更できません。

設定していない、コントロールはうまく反映できるのですが・・・

画面設計上、フォントを変更して作っているのですが、何かうまいやり方がありましたら五経図お願いいたします。

コードは、以下のとおりです。ダイアログから取得した値を
Me.Font = New Font("書体", "サイズ")

のような形で、入れています。

よろしくお願いいたします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-07-04 13:30
引用:

どらさんの書き込み (2006-07-04 13:20) より:

フォントダイアログを使い、それに伴うフォントサイズ、書体を画面のテキスト、コンボなど、画面すべてのコントロールに反映させてたいのですが、プロパティなどで、フォントを変更しているコントロールは、変更できません。
設定していない、コントロールはうまく反映できるのですが・・・


これは仕様です。

下記コードを見るに、

引用:

Me.Font = New Font("書体", "サイズ")


フォームに対してのみ設定していますよね?
Font プロパティの値が変更されていない場合、親コンテナの変更が適用されます。

フォームに配置されたすべてのコントロールのフォントを変更する場合は、
再帰呼び出しを使って、全コントロールに適用する必要があります。

  フォーム内のすべてのテキストボックスをクリアする

の TextBox クリア部分をフォントの変更に置き換えれば可能です。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
どら
ベテラン
会議室デビュー日: 2004/08/18
投稿数: 63
投稿日時: 2006-07-04 14:01
即時返答ありがとうございます。

早速、先ほどのコードで、フォント変更に直しやってみました。

フォントの変更はできたのですが、そのフォントサイズ倍率でテキストボックスが伸びてくれませんでした。

コントロールには、フォントを設定せず、フォームのプロパティを設定変えたときには、その倍率でのびてきくれたので、できないのですかね??
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-07-04 14:18
引用:

どらさんの書き込み (2006-07-04 14:01) より:

フォントの変更はできたのですが、そのフォントサイズ倍率でテキストボックスが伸びてくれませんでした。
コントロールには、フォントを設定せず、フォームのプロパティを設定変えたときには、その倍率でのびてきくれたので、できないのですかね??


できません。

Height はその FontSize に応じて変更されますが、Width については変更されません。
というより、各コントロールの Font がデフォルト値の場合に、
親コンテナの Font を変更したとしても、Width については変更されなかったと思いますけど...

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
どら
ベテラン
会議室デビュー日: 2004/08/18
投稿数: 63
投稿日時: 2006-07-04 15:34
返答ありがとうございます。

初期値だとできるんですよね。

vs2005だからなんですかね。

それなので、画面フォントを変えてコントロールが変わるように、コントロールはデフォルトのままで、やってみようと思います。

違う方法がわかりましたら、また書き込みします。

ご教授ありがとうございました。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-07-04 16:23
引用:

どらさんの書き込み (2006-07-04 15:34) より:

初期値だとできるんですよね。
vs2005だからなんですかね。


ああ、すみません。(*_ _)
2.0 (VB8 | VB2005) のお話だったのですね。

2.0 以降は、コンテナ内どころか Form 自体の大きさも変わります。
これは、Form.AutoScaleMode プロパティが、デフォルトで、
'Windows.Forms.AutoScaleMode.Font' に設定されているからです。

引用:

それなので、画面フォントを変えてコントロールが変わるように、コントロールはデフォルトのままで、やってみようと思います。


この方法は AutoScaleMode の設定に依存するので、場合によっては好ましくないかもしれません。
(見方によっては、'好ましい' という場合もあります)

引用:

違う方法がわかりましたら、また書き込みします。


倍率さえわかれば、リサイズの計算ができるのではないでしょうか。
Form の大きさが変わることを前提とするならば、Anchor プロパティを使うという手もあります。
(倍率でレイアウトし直さすことにはなりませんが)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

スキルアップ/キャリアアップ(JOB@IT)