C# と VB.NET の質問掲示板
ASP.NET、C++/CLI、Java 何でもどうぞ
C# と VB.NET の入門サイト
Re[3]: PropertyGridで属性の変更
(過去ログ 64 を表示中)
掲示板トップ
C# と VB.NET 入門
新規作成
利用方法/規約
トピック表示
ランキング
記事検索
過去ログ
[トピック内 4 記事 (1 - 4 表示)] <<
0
>>
■37325
/ inTopicNo.1)
PropertyGridで属性の変更
▼
■
□投稿者/ tingtong
(1回)-(2009/06/17(Wed) 10:58:46)
分類:[C++/CLI]
PropertyGridで属性の変更
お世話になります。tingtongと申します。
現在、PropertyGridを使用して、設定画面のUIを作成しております。
開発環境はWindowsXP(SP3)、VisualStudio2008、C++/CLIです。
状況に応じて、属性を変えたいのですがその方法がわかりません。
具体的には、以下のように定義されたプロパティを
[System::ComponentModel::Browsable(false)]
property bool flag;
状況に応じて、Browsableのtrue/falseを切り替えて
表示したりしなかったりする方法です。
何かお分かりになる方がいらっしゃいましたら、教えていただけるとありがたいです。
よろしくお願いします。
引用返信
編集キー/
編集
■37327
/ inTopicNo.2)
Re[1]: PropertyGridで属性の変更
▲
▼
■
□投稿者/
επιστημη
(1986回)-(2009/06/17(Wed) 11:47:25)
> 具体的には、以下のように定義されたプロパティを
> [System::ComponentModel::Browsable(false)]
> property bool flag;
> 状況に応じて、Browsableのtrue/falseを切り替えて
> 表示したりしなかったりする方法です。
その"状況"とはどんな状況?
それがたとえば
Debug時にはtrue / Release時にはfalse
なんてことなら
#ifdef _DEBUG
[System::ComponentModel::Browsable(true)]
#else
[System::ComponentModel::Browsable(false)]
#endif
て書けばいいんだし...
引用返信
編集キー/
編集
■37328
/ inTopicNo.3)
Re[2]: PropertyGridで属性の変更
▲
▼
■
□投稿者/ tingtong
(3回)-(2009/06/17(Wed) 12:03:42)
■
No37327
(επιστημη さん) に返信
> その"状況"とはどんな状況?
具体的には、Formに貼り付けたPropertyGridが
AからFormが呼び出された場合false(表示しない)
BからFormが呼び出された場合true(表示する)
といった状況です。
つまり、動的に変えたいということです。
引用返信
編集キー/
編集
■37343
/ inTopicNo.4)
Re[3]: PropertyGridで属性の変更
▲
▼
■
□投稿者/ Hongliang
(422回)-(2009/06/17(Wed) 15:49:23)
// もっと簡単な方法があるかも知れませんが。
TypeDescriptor::AddProvider によって、任意の TypeDescriptionProvider を特定のインスタンスに関連づけることができます。
そこで、独自の TypeDescriptionProvider 派生クラスを定義し、GetTypeDescriptor メソッドをオーバーライドして ICustomTypeDescriptor インターフェイスを実装するインスタンスを返すようにします。
ICustomTypeDescriptor インターフェイスの基本実装として CustomTypeDescriptor 抽象クラスが用意されているので、こちらも独自の派生クラスを定義し、GetProperties(array<Attribute^>^) をオーバーライドします。
GetProperties(array<Attribute^>^) の実装が一番面倒ですが(まともにやろうとすると PropertyDescriptor 派生クラスの定義が必要になります)、手を抜くなら CustomTypeDescriptor 派生クラスのコンストラクタに TypeDescriptor::GetProerties(Object^) で取得した PropertyDescriptorCollection を渡しておいて、あとは GetProperties 内で渡された attributes に合致する PropertyDescriptor のリストを作って返す、という流れになるでしょう。
ここで attributes に BrowsableAttribute が含まれているとき、目的のプロパティについては PropertyDescriptor::Attributes を無視して、返すリストに追加するかどうかを独自判断とするようにします。
引用返信
編集キー/
編集
トピック内ページ移動 / <<
0
>>
このトピックに書きこむ
過去ログには書き込み不可
管理者用
-
Child Tree
-