Laden...

Subproperty im Designer

Letzter Beitrag vor 15 Jahren 6 Posts 1.213 Views
Subproperty im Designer

Hallo!

Ich habe eine eigene TextBox erstellt. Diese TextBox verfügt über mehrere zusätzliche properties.
Eine davon gibt an ob die TextBox double Werte zulässt.
Nun möchte ich als subproperty von "AllowDouble", "OnlyPositive" haben.
Gibt es dazu ein Attribut.

Gruß
Vincent

Nein. Es geht aber natürlich trotzdem, wenn auch deutlich komplizierter.

"Subproperties" werden von TypeConvertern bereitgestellt, d.h., bau dir am besten deinen eigenen TypeConverter für diese Property und weis diesen per Attribut zu, damit kriegst du's hin. Anders geht es nicht oder nur noch komplizierter.

Georg

Hmm, mag sein das ich da wieder zu einfach denke - aber machs doch einfach via Enum:


public enum AllowDoubleTypes
{
OnlyPositive,
OnlyNegative
// ... usw.
}

private AllowDoubleTypes _allowDouble = AllowDoubleTypes.OnlyPositive

public AllowDoubleTypes AllowDouble{ get { return _allowDouble; } set { _allowDouble = value; }}

Der Designer zeigt es dann schon richtig an - um die Behandlung dieser Property musst Du dich dann selbst kümmern. Oder habe ich da was missverstanden ...

So wie ich das verstanden hab dreht es sich darum, dass es eine Eigenschaft AllowDouble gibt, die von der Sache her erstmal bool deklariert ist, und nur wenn das auf true steht, dann soll als "Untereigenschaft" OnlyPositive auftauchen, was dann auch wieder bool ist.

Somit ist die Lösung mit dem enum zwar eine sehr einfache Lösung, die aber das eigentliche Problem nur umschifft. Das geht aber auch nur, weil die Eigenschaften bool sind. Wenn das komplexere Typen sind, die man nicht in enums zusammenfassen kann wird die Sache schon problematischer....

Genau.
Ich möchte es so haben wie z.B. bei einer PictureBox und dessen BackgroundImage. Erst beim hinzufügen eines Images werden einige Subeinstellungen sichtbar.

Hallo Vincent Duke,

das liegt daran, dass a) Image eine eigene Klasse ist und b) für die Image-Property der PictureBox-Klasse vermutlich ein ExpandableObjectConverter als TypConverterAttribute angegeben ist.

herbivore