Autor Beitrag
InCoBra
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 43



BeitragVerfasst: Di 30.09.08 18:36 
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:

ausblenden 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(436);
this.Klasse.Name = "Klasse";
this.Klasse.Size = new System.Drawing.Size(150150);
this.Klasse.TabIndex = 0;
this.Klasse.TabStop = false;


Hier die definition der Eigenschaft "Angle":

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Di 30.09.08 19:06 
Du könntest sowas machen:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Di 30.09.08 19:20 
user profile iconChryzler hat folgendes geschrieben:
Du könntest sowas machen:
Jupp, das sollte man sowieso immer machen (wenn jedenfalls im Setter mehr als field = value; steht).
user profile iconChryzler 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 43



BeitragVerfasst: Di 30.09.08 19:35 
user profile iconKha 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?:

ausblenden 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)] // Oder auch so: [System.ComponentModel.DefaultValueAttribute(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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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?

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
InCoBra Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 43



BeitragVerfasst: Di 30.09.08 20:00 
Super danke, manchmal sieht man halt den Wald vor lauter Bäumen nicht mehr :P
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mi 01.10.08 13:09 
user profile iconInCoBra hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconKha 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 43



BeitragVerfasst: 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