質問者
PropertyGridのカテゴリ名称を自由に変更する

全般的な情報交換
-
はじめまして、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 他スレッドで解決のため
すべての返信
-
同一投稿ですので、投稿時刻の早い方に誘導しておきます。
http://social.msdn.microsoft.com/Forums/ja-JP/csharpgeneralja/thread/c8ad75ee-10ea-426d-9540-e0bb08ed387b
念のため:
2つのフォーラムに一緒に投稿されると、別々の方が回答を寄せたり、試した情報が共有できなかったりして、質問者、回答者共に損をするかもしれません。
そう言った意味でも、同時進行は辞めておいた方が無難かもしれません。
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。 -