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

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

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

Re[2]: コントロールのフォントが変更できない


(過去ログ 130 を表示中)

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

■77248 / inTopicNo.1)  コントロールのフォントが変更できない
  
□投稿者/ ミーアキャット (23回)-(2015/09/30(Wed) 18:24:38)

分類:[.NET 全般] 

フォームにコントロールを貼り付けると
親フォームのフォントを変更するとコントロールのフォントも変更されます。

ところが、一度コントロールのフォントを設定してしまうと
親フォームのフォントを変更してもコントロールのフォントは変更されません。

初期状態に戻す方法はないのでしょうか?
引用返信 編集キー/
■77250 / inTopicNo.2)  Re[1]: コントロールのフォントが変更できない
□投稿者/ 魔界の仮面弁士 (514回)-(2015/09/30(Wed) 19:45:26)
No77248 (ミーアキャット さん) に返信
> フォームにコントロールを貼り付けると
> 親フォームのフォントを変更するとコントロールのフォントも変更されます。
Font, Cursor, BackColor, ForeColor などのプロパティは "Ambient" であり、
親コントロール(Form、Panel、GroupBox 等)の値を引き継ぐようになっています。


> 初期状態に戻す方法はないのでしょうか?
『デザイン時に』という意味であれば、プロパティ一覧で
太字になっているもの(今回は Font プロパティ)を右クリックし、
「リセット」すれば OK です。


『実行時に』という意味であれば、Font プロパティや Cursor プロパティに
Nothing(VB) / null(C#)をセットすれば OK です。
ForeColor や BackColor プロパティの場合は、Color.Empty ですね。

上記のように、既定値にするための値はプロパティによって異なりますが、
それを汎用的に処理したいのであれば、PropertyDescriptor を使うことができます。
PropertyDescriptor クラスの ResetValue メソッドを呼び出すことで、
指定したプロパティの値を、既定値(≠初期値)に戻すことができます。
引用返信 編集キー/
■77256 / inTopicNo.3)  Re[2]: コントロールのフォントが変更できない
□投稿者/ ミーアキャット (24回)-(2015/10/01(Thu) 08:38:03)
No77250 (魔界の仮面弁士 さん) に返信
> Font, Cursor, BackColor, ForeColor などのプロパティは "Ambient" であり、
> 親コントロール(Form、Panel、GroupBox 等)の値を引き継ぐようになっています。

右クリックで初期化できたんですね。
初歩的な質問ですみませんでした。
Desiner.cs でフォント指定の行を消したりしたのですがうまくいかず。
どうしようかと思っていました。

> 『デザイン時に』という意味であれば、プロパティ一覧で
> 太字になっているもの(今回は Font プロパティ)を右クリックし、
> 「リセット」すれば OK です。
> 『実行時に』という意味であれば、Font プロパティや Cursor プロパティに
> Nothing(VB) / null(C#)をセットすれば OK です。
> ForeColor や BackColor プロパティの場合は、Color.Empty ですね。
実行時でもリセットできたんですね。
以前に、起動時の状態を保持して、もとに戻すというような処理をしていました。

> 上記のように、既定値にするための値はプロパティによって異なりますが、
> それを汎用的に処理したいのであれば、PropertyDescriptor を使うことができます。
> PropertyDescriptor クラスの ResetValue メソッドを呼び出すことで、
> 指定したプロパティの値を、既定値(≠初期値)に戻すことができます。

こんな感じで実行できました。

PropertyDescriptorCollection pdc = TypeDescriptor.GetProperties(label1);
PropertyDescriptor pd = pdc.Find("Font", false);
pd.ResetValue(label1);


いろいろありがとうございました。

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


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

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -