Entwickler-Ecke
Sonstiges (.NET) - Frage zum generierten Code des Windows Form-Designer
InCoBra - Di 30.09.08 18:36
Titel: Frage zum generierten Code des Windows Form-Designer
Hey,
ich habe eine Klasse erstellt, die beim ersten setzen einer Eigenschaft, ein Bild verarbeiten soll.
Jetzt habe ich das Problem, dass der Windows Forms-Designer automatisch diese Eigenschaft setzt.
Eigentlich müsste diese Eigenschaft, nicht mehr explizit gesetzt werden, da sie eh nur auf den Wert 0 gesetzt wird und dieser ist schon in der Klasse gesetzt...
Hier der Code des Windows-Designers:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| this.Klasse.Angle = 0F; this.Klasse.Image = ((System.Drawing.Image(resources.GetObject("Klasse.Image"))); this.Klasse.Location = new System.Drawing.Point(43, 6); this.Klasse.Name = "Klasse"; this.Klasse.Size = new System.Drawing.Size(150, 150); this.Klasse.TabIndex = 0; this.Klasse.TabStop = false; |
Hier die definition der Eigenschaft "Angle":
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| private float _Angle = 0; public float Angle { get { return _Angle; } set { _Angle = value; this.InitImage(); } } |
Hat jemand ne Idee wie ich das Verhindern kann?
Bitte jetzt nicht sagen, ich soll einfach nicht den Windows Forms-Designer benutzen, sondern den Code per Hand schreiben...
Gruß,
InCoBra
Chryzler - Di 30.09.08 19:06
Du könntest sowas machen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| private float _Angle = 0; public float Angle { get { return _Angle; } set { if (value != _Angle) { _Angle = value; this.InitImage(); } } } |
Ansonsten wüsst ich jetzt auch nicht wie du dem Designer beibringen kannst, dass 0 der Standardwert ist. Weil normalerweise erkennt das ja der Designer.
Kha - Di 30.09.08 19:20
Chryzler hat folgendes geschrieben: |
Du könntest sowas machen: |
Jupp, das sollte man sowieso immer machen (wenn jedenfalls im Setter mehr als
field = value; steht).
Chryzler hat folgendes geschrieben: |
Ansonsten wüsst ich jetzt auch nicht wie du dem Designer beibringen kannst, dass 0 der Standardwert ist. Weil normalerweise erkennt das ja der Designer. |
Nein, wie sollte er das können?
System.ComponentModel.DefaultValueAttribute
InCoBra - Di 30.09.08 19:35
Kha hat folgendes geschrieben: |
Nein, wie sollte er das können? |
Das ist schon ironisch gemeint oder :)
Eigentlich müsste es doch wie folgt funktionieren, oder?:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| private float _Angle = 0;
[System.ComponentModel.DefaultValue(0)] public float Angle { get { return _Angle; } set { if (value != this._Angle) { _Angle = value; this.InitImage(); } } } |
Die Zeile "this.Klasse.Angle = 0F;" kommt aber trotzdem noch :(
Christian S. - Di 30.09.08 19:42
Hast Du mal versucht, als Defaultvalue 0F oder 0.0 zu benutzen, damit sichergestellt ist, dass kein Int dort verwendet wird?
InCoBra - Di 30.09.08 20:00
Super danke, manchmal sieht man halt den Wald vor lauter Bäumen nicht mehr :P
Kha - Mi 01.10.08 13:09
InCoBra hat folgendes geschrieben : |
Kha hat folgendes geschrieben: | Nein, wie sollte er das können? |
Das ist schon ironisch gemeint oder :) |
Nein, eigentlich nicht :) . Nur weil 0.0f der Standardwert von float ist, muss das ja nicht auf alle float-Eigenschaften zutreffen, bei dir passt es nun zufällig. Da müsste der Designer schon deinen Konstruktor nach Zuweisungen durchsuchen ;) .
InCoBra - Do 02.10.08 15:37
Okay,
ich habe es falsch interpretiert, ich dachte du meinst es so, dass du ironisch sagst, das geht nicht und dann halt schreibst wie es geht ;)
Spricht dass das "Nein, wie sollte er das können?" auf das "System.ComponentModel.DefaultValueAttribute" beziehen sollte ;)
Gruß,
InCoBra
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!