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

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

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

Re[2]: PropertyGridで動的配列をリスト表示


(過去ログ 73 を表示中)

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

■42527 / inTopicNo.1)  PropertyGridで動的配列をリスト表示
  
□投稿者/ SABO (1回)-(2009/10/17(Sat) 03:05:32)

分類:[C#] 

C#の初心者です。
環境はVisual Studio 2005
      .NET 2.0
   を使用しています。

PropertyGridでstring[]のデータをEnum型のようにドロップダウンリストで編集したいのですが、
string[]型のデータが動的に変更されることを想定しています。

Webで調べてはみたのですが、下記のサイトのようにstring[]が固定のものしか見つかりませんでした。
「.NET Framework の PropertyGrid コントロールの高度な活用」
http://msdn.microsoft.com/ja-jp/library/aa302326.aspx

期待する動作は以下のような感じです。
string[]{"新規ファイル", "File1", "Document1"}
    ↓(ボタンクリックなどのイベント発生)
string[]{"新規ファイル", "File1", "Document1", "Image1"}
このstring[]をEnum型のように編集したいです。

ご存知の方いらっしゃいましたらよろしくお願いします。

引用返信 編集キー/
■42537 / inTopicNo.2)  Re[1]: PropertyGridで動的配列をリスト表示
□投稿者/ Hongliang (487回)-(2009/10/17(Sat) 10:38:58)
2009/10/17(Sat) 10:39:22 編集(投稿者)
ICustomTypeDescriptor やら TypeDescriptionProvider やらを実装するのが正道でしょうかね。
相当面倒ですけど。

すっごく単純にやるなら、MSDN のサンプルで言うところの FileNameConverter の
GetStandardValues メソッド内の string[] を、FileNameConverter の静的フィールド
に配置するようにして、これを変更できるようにすることです。
// ついでに配列じゃ面倒なので List<string> に変更
static List<string> parameters;
static FileNameConverter() {
    parameters = new List<string>();
    parameters.AddRange(new string[] { "新規ファイル", "File1", "Document1" });
}
public static void AddParameter(string parameter) {
    parameters.Add(parameter);
}
// GetStandardValues でこの parameters からStandardValuesCollection を生成。

この方法だと、[TypeConverter(typeof(FileNameConverter))] 属性を付けた
プロパティ全てのドロップダウンに追加されるようになるのが難点ですが。

引用返信 編集キー/
■42640 / inTopicNo.3)  Re[2]: PropertyGridで動的配列をリスト表示
□投稿者/ SABO (2回)-(2009/10/19(Mon) 18:56:37)
Hongliangさん

回答ありがとうございます。
期待している通りの動作になりました。

結構悩んでいたのですが、staticで登録しておけば良かったんですね。

本当にありがとうございます。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -