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

わんくま同盟

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

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


(過去ログ 18 を表示中)
■7153 / )  Re[5]: propertyGridで、プロパティ値を日本語表示したい
□投稿者/ Hongliang (179回)-(2007/08/30(Thu) 22:59:29)
Hongliang さんの Web サイト
> 上記の方法でできるのですが、これが使用するEnum全てに書かないといけないため
> 結構面倒くさいことになるのです。
>
> (個人差はありますが)面倒くさくないうまい方法を見つければ教えてください。

たとえば、「PropertyGridコントロールに表示されるプロパティ名を変更するには?」の記事に倣うとか。
EnumDisplayName 属性を用意して、列挙型の各メンバに設定。
列挙型には EnumConverter を継承した EnumDisplayConverter を TypeConverter 属性に設定。
EnumDisplayConverter の、
ConvertTo: 引数のカスタム属性を取得して EnumDisplayName が設定されていればそれを返す。そうでない場合は基底の処理に任せる。
ConvertFrom: 列挙型の各フィールドのカスタム属性を調べ、変換元文字列が見つかったらそのフィールドのインスタンスを返す。見つからなかったら基底の処理へ。

なんて感じ。

// EnumConverter コンストラクタが Type を引数に要求するから各列挙型ごとに再派生しなきゃならないかと思ったら、引数の Type には暗黙に自身の型を渡してくれるみたい。
返信 編集キー/


管理者用

- Child Tree -