none
PropertyGridのカテゴリ名称を自由に変更する RRS feed

  • 全般的な情報交換

  • はじめまして、Ken1_Wと申します。
    標記の件について、質問させてください。

    開発環境は、Visual Studio 2005、C#、Windowsアプリケーションです。

    PropertyGridコントロールを使用して、自作クラス(下記、MyClass)のオブジェクト
    内にあるプロパティ(下記、Prop1)の取得/設定を行う際に、
    カテゴリ名称の文字列をプログラムで自由に変更できるようにしたいのですが、
    上手く変更できない場合が発生しています(一部変更できていますが、
    条件によって変更できない場合があります)。

    現在私が確認している、カテゴリ名称の文字列を変更する実装コードを
    以下に説明します。
    カテゴリ名称を指定可能な、System.Component.CategoryAttributeクラスを
    継承したクラス(MyCategory)を新規に作成し、GetLocalizedStringメソッドを
    オーバーライドして、ローカライズされた文字列を変更することで、
    カテゴリ文字列を変更するようにしています。

    <実装コード>
    // 自作クラス
    class MyClass
    {
        // 対象のプロパティ
        [LocalizedCategoryAttribute("Prop1")]
        public property int Prop1
        {
            :
        }
    }

    // CategoryAttributeクラスを継承したクラス
    class MyCategory : CategoryAttribute
    {
        protected override string GetLocalizedString(string sValue)
        {
            // 条件に応じて、カテゴリ文字列を切り換えたい。
            if(条件)
            {
                return "カテゴリ";
            }
            else
            {
                return "Category";
            }
        }
    }

    ただし、上記のコードですと、GetLocalizedStringメソッドが、
    指定クラスのインスタンスを最初に生成した時点でしか呼ばれないため、
    途中で別の文字列へ変更することができない状況になってしまいます。

    カテゴリ名称の文字列を変更する方法をご存知の方がおられましたら、
    ご教示いただきたく、宜しくお願い致します。

    • 種類を変更済み sk7474 2009年2月26日 5:54 他スレッドで解決のため
    2009年2月18日 10:45

すべての返信