none
デフォルトのフォントの変更 RRS feed

  • 質問

  • 現在.NetFramework2.0 VisualStudio2005ProでWindowsフォームの開発をしています。

     

    ユーザからの要望ですべてのフォントをMSゴシックで作成して欲しいと依頼がありました。

     

    画面製造担当者がすべてのフォントを変更しなくて良い方法を調査しています。

     

    すべてのコントロールのデフォルトのフォントはMS UI ゴシックですが、それをMSゴシックにすることは可能でしょうか?

     

    画面のLOAD時などにコントロールを再帰呼び出ししてフォントを全て変更することを考えましたが、デザイナで画面作成時のフォントがMS UI ゴシックになってしまいます。

     

    何か良い方法がないでしょうか?

     

    2007年5月31日 13:05

回答

すべての返信

  • がんばれ。

    2007年5月31日 13:54
  • Form の Font プロパティに従ってくれますけど...?
    2007年5月31日 14:36
  • 回答ありがとうございます。

     

    FormのフォントをMSゴシックにしてコントロールを貼り付けて見たところフォントがMSゴシックになりました。

     

    少し調べたところControlのFontプロパティはアンビエントプロパティなので親コンテナのプロパティから取得されるとわかりました。

     

    ただToolStripコントロールのフォントはアンビエントプロパティではないみたいで親コンテナのプロパティを取得してくれませんでした。

     

    現在、ToolStripコントロールのフォントプロパティをアンビエントプロパティにする方法を調査しています。

     

    もし、アンビエントプロパティに出来ないようだったら、FontプロパティのDefault値をMSゴシックにする方法を調査してみます。

     

     

    2007年6月1日 2:06
  • カスタム コントロール (拡張コントロール) 側で変更可能であれば、それでうまくいけるかもしれません。
    試したことがないのでわかりませんけども。
    2007年6月1日 5:53
  • 結局ToolStripのフォントをアンビエントプロパティに変更することは諦めました。

     

    ToolStripのフォントプロパティをNewで上書きしてデフォルト値をMSゴシックに変更することですべてのフォントを変更することが出来ました。

     

    Code Snippet

    //プロパティ定義
    [DefaultValue(typeof(Font),"MS ゴシック, 9")]
    public override Font Font
    {
        get { return base.Font; }
        set { base.Font = value; }
    }

     

    コンストラクタでフォントの初期値をMSゴシックに変更

     

    Code Snippet
    /// <summary>
    /// コンストラクタ
    /// </summary>
    public PuDataGridNavigator()
    {
        InitializeComponent();
        this.Font = new Font("MS ゴシック", base.Font.Size);
    }

     

    今まで行き詰ってしまった時に相談する人も社内になかなかいなくて途方にくれていましたが、このフォーラムを利用するようになってから助かることが多いです。

     

    みなさんのように良い質問、良い回答が出来るよう頑張ります。

     

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

    2007年6月2日 2:19