C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

画面の表示縮尺に合わせて、コントロールのFontサイズを変更

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■84688 / inTopicNo.1)  画面の表示縮尺に合わせて、コントロールのFontサイズを変更
  
□投稿者/ たま (11回)-(2017/07/27(Thu) 16:28:43)

分類:[C#] 

いつもお世話になっております。

今回も、皆さんのお知恵を拝借したく投稿させて頂きました。

[開発環境]
OS:Windows7
開発環境:Visual studio 2017
開発言語:C#

[実現したいこと]
複数のコントロールが存在する画面にて、画面の端をマウスで掴み
表示縮尺を変更した際に、それに合わせてコントロールのサイズと
コントロールで表示している文字列の文字サイズ(Fontサイズ)を動的
に変更したいと考えています。

コントロールのサイズに関しては、画面の表示縮尺に合わせて変更
されるプログラムを作成できたのですが、文字サイズを画面サイズ
に追随させる方法がわかりません。
※本掲示板のNo.32673 "可変枠に収まるFont sizeの取得"なども参考
にさせて頂きましたが上手くいきませんでした。

お分かりになる方がいらっしゃいましたら、ご教授頂けると幸いです。
※可能であれば、Form_Resizeイベント発生時に文字サイズを変更する
関数を呼び出し、その際に"System.Windows.Forms.Control" で
コントロールの情報を渡すことによって、一関数で複数のコントロール
の文字サイズを変更できると大変助かります。

宜しくお願い致します。
引用返信 編集キー/
■84695 / inTopicNo.2)  Re[1]: 画面の表示縮尺に合わせて、コントロールのFontサイズを変更
□投稿者/ Azulean (841回)-(2017/07/27(Thu) 21:44:50)
No84688 (たま さん) に返信
> コントロールのサイズに関しては、画面の表示縮尺に合わせて変更
> されるプログラムを作成できたのですが、文字サイズを画面サイズ
> に追随させる方法がわかりません。

コントロールに個別に設定していなければ、Form の Font プロパティを変えると、その Form に置かれているすべてのコントロールに追従します。
Form 全体で同じフォントにしたくないのであれば、同じ Font で良いグループを Panel なり、GroupBox なりの上に置き、その Panel や GroupBox で Font を変更すれば、手間は減るでしょう。


> ※可能であれば、Form_Resizeイベント発生時に文字サイズを変更する
> 関数を呼び出し、その際に"System.Windows.Forms.Control" で
> コントロールの情報を渡すことによって、一関数で複数のコントロール
> の文字サイズを変更できると大変助かります。

そういう万能な処理は存在しないので自分で作る必要があります。

こういうリサイズ系のコンポーネントで事足りるならそれを頼るのも手です。(好みはあると思います)
http://www.grapecity.com/tools/products/inputmanpluswin10/feature#kinou13
引用返信 編集キー/
■84705 / inTopicNo.3)  Re[2]: 画面の表示縮尺に合わせて、コントロールのFontサイズを変更
□投稿者/ たま (12回)-(2017/07/28(Fri) 14:16:22)
No84695 (Azulean さん) に返信

返信が遅くなり、申し訳ありません。
Azuleanさん、ご回答ありがとうございます。

> コントロールに個別に設定していなければ、Form の Font プロパティを変えると、その Form に置かれているすべてのコントロールに追従します。
> Form 全体で同じフォントにしたくないのであれば、同じ Font で良いグループを Panel なり、GroupBox なりの上に置き、その Panel や GroupBox で Font を変更すれば、手間は減るでしょう。
テスト的に以下のコードを記載して実施してみましたが、Fontのサイズが追従されませんでした。
どのようにすれば追従されますでしょうか。
ご教授頂けると幸いです。

[実施したこと]
1.Visual studio 2017で新しいWindows Form Alicationプロジェクトを作成する
2.Form上にボタンを1つ設置する
3.Formのリサイズイベントを追加する
4.リサイズイベント内に以下のコードを記載する
 this.Font(this.Font.FontFamily,5);
5.プログラムを実行し、Formをリサイズする
※上記5を実施すると、確かにFormのFontサイズは変更されましたが、ボタンのFontサイズは変更されませんでした。
 

>>※可能であれば、Form_Resizeイベント発生時に文字サイズを変更する
>>関数を呼び出し、その際に"System.Windows.Forms.Control" で
>>コントロールの情報を渡すことによって、一関数で複数のコントロール
>>の文字サイズを変更できると大変助かります。
>
> そういう万能な処理は存在しないので自分で作る必要があります。
>
> こういうリサイズ系のコンポーネントで事足りるならそれを頼るのも手です。(好みはあると思います)
> http://www.grapecity.com/tools/products/inputmanpluswin10/feature#kinou13
そうですか、上記のようなことは簡単にはできないのですね。
何とか汎用性のあるうろグラムを作成できれば良いのすが、まだまだ初心者なので難しそうです。



引用返信 編集キー/
■84706 / inTopicNo.4)  Re[3]: 画面の表示縮尺に合わせて、コントロールのFontサイズを変更
□投稿者/ 魔界の仮面弁士 (1362回)-(2017/07/28(Fri) 14:37:07)
2017/07/28(Fri) 14:39:43 編集(投稿者)

No84705 (たま さん) に返信
> this.Font(this.Font.FontFamily,5);
上記は
 this.Font = new Font(this.Font.FontFamily, 5);
のことでしょうか?


> 5.プログラムを実行し、Formをリサイズする
> ※上記5を実施すると、確かにFormのFontサイズは変更されましたが、ボタンのFontサイズは変更されませんでした。
デザイン時にそのボタンのプロパティ一覧を開き、
Font プロパティの欄を右クリックし、[リセット]を選択してみてください。
これで、反映されるようになると思います。

デザイン時に Font プロパティを設定していると、その設定が優先されるため、
親の Font を書き換えても反映されませんので注意してください。
(デザイン時に変更されたプロパティは、太字で表示されています)
引用返信 編集キー/
■84708 / inTopicNo.5)  Re[4]: 画面の表示縮尺に合わせて、コントロールのFontサイズを変更
□投稿者/ たま (13回)-(2017/07/28(Fri) 15:52:03)
魔界の仮面弁士 さん

ご回答ありがとうございます。


> 上記は
>  this.Font = new Font(this.Font.FontFamily, 5);
> のことでしょうか?
すみません。
また記述が足りていませんでした。
その通りです。


>>5.プログラムを実行し、Formをリサイズする
>>※上記5を実施すると、確かにFormのFontサイズは変更されましたが、ボタンのFontサイズは変更されませんでした。
> デザイン時にそのボタンのプロパティ一覧を開き、
> Font プロパティの欄を右クリックし、[リセット]を選択してみてください。
> これで、反映されるようになると思います。
>
> デザイン時に Font プロパティを設定していると、その設定が優先されるため、
> 親の Font を書き換えても反映されませんので注意してください。
> (デザイン時に変更されたプロパティは、太字で表示されています)
デザイン時に一度でも変更してしまうと、元のFontサイズに戻しても反映されなくなるのですね。
知りませんでした。
おっしゃる通りやってみましたら出来ました。
ありがとうございます。

解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ