Frage

Ich habe ein Windows.Forms-Komponente, die eine "mySize" - Eigenschaft zurückgibt, Größe struct.Meine Absicht war es, diese Eigenschaft für die Berechnung der zurückgegeben mySize automatisch basierend auf der Größe der Komponente an, es sei denn, mySize wurde ausdrücklich festgelegt, in dem Fall senden Sie den eingestellten Wert von mySize.Leider, jetzt, dass ich die Einbettung der Komponente in eine form, die Windows Forms-designer hat beschlossen, zu starten, explizit erzeugen und festlegen eines Werts für die mySize Eigenschaft, die Schrauben ist mir Recht auf.

Also ich brauche, um einen Standardwert, so dass die Designer gehen Weg und lassen mich allein.

Ich habe gelesen, bis auf die Antworten der Umgang mit dem System.ComponentModel.DefaultValue, so weiß ich, dass muss ich manuell den Wert für die Eigenschaft im Konstruktor, aber die Antworten und die Dokumentation, die ich gefunden habe nur deal mit der Einstellung eines DefaultValue False, Konstant.

Eine Größe von struct ist nicht Konstant und so der VB-compiler ist ausgeflippt, sagen mir, ich kann nicht von einer Größe, wie Sie die DefaultValue-Eigenschaft für den Typ-Größe, denn die Größen sind keine Konstanten.

Das macht mein Gehirn weh.

Ich kann wohl-code, um das problem, indem Sie getMySize und setMySize Methoden anstelle der Verwendung einer Eigenschaft, aber ich würde gerne wissen, ob es eigentlich irgendeine Möglichkeit, die default-Eigenschaft für eine Größe.

NB:Ich bin nicht mit mySize als eine Art fehlgeleiteten Versuch, Sie zu überschreiben Sie die Size-Eigenschaft (die einen Standardwert von 150x150, so ETWAS scheint in der Lage sein, DefaultValues für die Größen);mySize ist nur einige Größe erforderlich durch die Klasse.

War es hilfreich?

Lösung

Anstelle der Anwendung der DefaultValue-Attribut, schreiben Sie die folgenden zwei Methoden:

bool ShouldSerializemySize() { ... }
void ResetmySize() { ... }

In ShouldSerializemySize, true zurückgeben, wenn der Wert serialisiert werden sollen, um code.In ResetmySize, setzen Sie die Eigenschaft auf seinen Standardwert.

Die Komponente designer wird automatisch heben diese Methoden durch Reflexion.

Mehr Infos hier:http://msdn.microsoft.com/en-us/library/53b8022e(VS.71).aspx

Andere Tipps

Ich habe bemerkt, dass es tatsächlich ein konkretes Beispiel gegeben für die Einstellung der defaultValue-Typ Größe in den Community-Inhalten Abschnitt DefaultValue der MSDN-Seite, was darauf hindeutet, mit der DefaultValue-Konstruktor beschrieben diese Seite.

Leider, während das Beispiel gegeben, es ist richtig, dass es funktioniert, es scheint mir, dass die MSDN-Dokumentation, würde das natürlich nicht führen, wer zu dieser Antwort.

Ich bin gehen zu set albahari ' s Antwort, denn die Antwort auf diese Frage (weil seine Antwort zumindest macht irgendeinen Sinn) und lassen Sie dieses Beispiel hier der Vollständigkeit halber.

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