Frage

Ich weiß, dass das Komponentenmodell angibt, ob eine Eigenschaft einen Standardwert hat oder nicht, mittels von SeriSerializeValue -Methode von PropertyDescriptor.

Die Basis-Windows-Forms Control Klasse, hat einige Eigenschaften wie Vorhersage, Backcolor und Schriftart, diese standardmäßig zum gleichen Wert des übergeordneten, aber ich konnte keine finden TypeDescriptor oder PropertyDescriptor Das liefert diese Standardwerte. Die Kontrollklasse implementiert weder icustomtyedescriptor noch eine typedescriptionProviderAttribute.

Wie zeigt die Steuerklasse an, dass diese Eigenschaften serialisiert werden sollten oder nicht? Wo liefert es die PropertyDescriptors für diese Eigenschaften?

Vielen Dank!!!

War es hilfreich?

Lösung

Sie haben keine Standardwerte. Diese Eigenschaften sind "Umgebungseigenschaften". Die Kontrollklasse erkennt, dass für sie eine Eigenschaftszuweisung aufgetreten ist. Wenn das nie passiert ist, verwendet es die entsprechende Eigenschaft vom Elternteil. Das ist schön, es stellt sicher, dass Kindersteuerungen dieselben Farben und Schriftart wie ihren Behälter verwenden.

In der Kontrollklasse gibt es eine sentserializeFeColor () -Methode. Es ist intern und kann nicht durch den Benutzercode überschrieben werden. Gleiches gilt für die anderen Eigenschaften. Sehen Sie sich mit Reflektor oder der .NET-Referenzquelle an.

Das MSDN -Bibliothek dokumentiert sie so:

Windows -Formulare Steuerelemente Verwenden Sie Umgebungseigenschaften, sodass Kindersteuerungen wie ihre Umgebung erscheinen können. Eine Umgebungseigenschaft ist eine Kontrolleigenschaft, die, wenn sie nicht festgelegt ist, aus der Elternsteuerung abgerufen wird. Wenn die Steuerung kein Elternteil hat und die Eigenschaft nicht festgelegt ist, versucht der Steuerelement, den Wert der Umgebungseigenschaft über die Site -Eigenschaft zu bestimmen. Wenn die Steuerung nicht festgelegt ist, wenn die Site keine Umgebungseigenschaften unterstützt oder wenn die Eigenschaft nicht auf den AmbientProperties festgelegt ist, verwendet die Steuerung ihre eigenen Standardwerte. Typischerweise stellt eine Umgebungseigenschaft ein charakteristisches Merkmal einer Kontrolle dar, wie z. B. Backcolor, das einer Kinderkontrolle mitgeteilt wird. Beispielsweise hat eine Schaltfläche standardmäßig das gleiche Backcolor wie das übergeordnete Formular. Die von der Kontrollklasse bereitgestellten Umgebungseigenschaften umfassen: Cursor, Schriftart, Backcolor, Prognosen und Rechten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top