2011-08-13 18 views
1

単純なプロパティ(整数、文字列など)でカスタムUserControlを作成し、そのプロパティをプロパティパネルに表示させることができます。 Size、Rectangleなどのプロパティを持つカスタムUserControlを作成することもできます。プロパティはプロパティパネルで展開可能なアイテムとして表示されます( '+'をクリックし、サイズは幅&の高さに拡大されます)。構造化/複数レベルのプロパティを持つ.NETカスタムUserControl

独自のカスタム構造でプロパティを作成することはできますか?例えばプロパティ 'Message'はText、ForeColor、BackColor、Blinkなどに展開されます。私はカスタム構造を表すプロパティを含む単純なクラスまたは構造を参照するプロパティを作成しようとしましたが、プロパティパネルではプロパティはグレー表示され、または修正された。

答えて

1

カスタムタイプにはTypeConverterを提供し、文字列との変換が可能で、TypeConverterAttributeでカスタムタイプを飾る必要があります。

ExpandableObjectConverterからあなたのTypeConverterを導出します。

public class MyTypeConverter : ExpandableObjectConverter 
{ 
} 

オーバーライド​​、ConvertTo()CanConvertFrom()、および文字列にカスタム型を変換する機能を提供するために、ConvertFrom()(これはあなたが拡大する前に確認することができ、メイン行のプロパティグリッドに表示される値です)文字列からその文字列に戻します。共通の文字列表現は、すべてのフィールド値のリストをコンマで区切って表示することです。

TypeConverterAttributeでカスタム型を飾ります。

[TypeConverter(typeof(MyTypeConverter))] 
public struct MyType 
{ 
} 

これは、あなたが始めてもらえる最小限のものです。多くのことを学ぶ必要があります。 This MDSN articleがおすすめです。

+0

うまくいきました。ありがとう! – sanger

+0

@ sanger:どうぞよろしくお願いいたします。この回答に合格とマークして、それをアップボールドしてください。 :) –

+0

ちょうどフォローアップ。デザイナーがプロパティ値を適切に保存できるように、各プロパティに次の属性を追加する必要もあることがわかりました。 sanger

関連する問題