Tach zusammen!
Ich bin am verzweifeln!
Ich habe ein Usercontrol erstellt. Dem Usercontrol habe ich im Deklarationsteil ein enum verpaßt:
public enum TestEnum {eins, zwei, drei}
private TestEnum enumProp = eins;
Das Usercontrol erhält außerdem eine Eigenschaft, die auf dieses Enum zurückgreift:
public TestEnum EnumProp {get...; set...;}
Wenn ich nun mein Usercontrol auf eine Form pflanze, müßte ich ja mit dem Eigenschaftenfenster die Eigenschaft 'EnumProp' einstellen können.
Soweit funktioniert das auch. Wenn sich nun aber die Form IM DESIGNER (jawoll: im Designer) neu zeichnen muß (z. B. nach dem Compilieren oder einfach mal in den Code wechseln und zurück zum Designer), dann setzt sich meine Eigenschaft 'EnumProp' automatisch zurück auf den Defaultwert bzw. auf den Wert, der im enum der 0 entspricht.
Ich kriege es einfach nicht hin, daß der Enum-Wert dauerhaft gespeichert wird.
Kann mir jemand weiterhelfen? Bin für jeden Brainstorming-Tip dankbar.
Gruß
Guggsdu
Gruß
Guggsdu
Dem Enum einen Standartwert zuweisen funzt net? Kannst ja mal im Quelltext gucken, ob denn überhaupt dein neuer Wert eingearbeitet wird....
Besuchen sie das VisualC++ - Forum
Ich könnte mir vorstellen das es an deiner Zuweisung liegt:
public enum TestEnum {eins, zwei, drei}
// Hier erster evtl. Fehler
// private TestEnum enumProp = eins;
// Solltest du so schreiben;
private TestEnum enumProp = TestEnum.eins;
// Deine Eigenschaft sollte dann natürlich das gleiche machen
public TestEnum EnumProp
{
get { return this.enumProp; }
set { this.enumProp = value; }
}
// public TestEnum EnumProp {get...; set...;}
Also bei mir funktioniert das ...
Mit freundlichen Grüßen
René Paschold
.NET Developer / Trainer / Speaker / Author /
Projectleader / Software-Architect
.blog http://www.rene-paschold.de/
.business http://www.smarthouse.de/
Bei mir funktioniert das auch. Mit Deiner Zuweisung dürfte es aber garnicht compiliert werden.
Mit meiner oder seiner? Meine lief 😁
Mit freundlichen Grüßen
René Paschold
.NET Developer / Trainer / Speaker / Author /
Projectleader / Software-Architect
.blog http://www.rene-paschold.de/
.business http://www.smarthouse.de/
Original von Rene Paschold
Mit meiner oder seiner? Meine lief 😄
Mit seiner.
Nee Jungs, bei mir funktioniert das einfach nicht. Ich habe jetzt folgenden Code ausprobiert:
public enum TestEnum {eins, zwei, drei}
private TestEnum enumProp = TestEnum.eins;
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public TestEnum EnumProp {
get {
return this.enumProp;
}
set {
this.enumProp = value;
}
}
und es funzt ni!
Ich hoffe wir verstehen uns richtig: Ich füge mein Usercontrol in ein Form ein, stelle die Eigenschaft EnumProp auf 'drei', compiliere und schon steht 'EnumProp' wieder auf eins.
Im Übrigen wird selbst beim setzen der EnumProp-Eigenschaft im Eigenschaftenfenster kein Code im 'InitializeComponent' - Bereich erzeugt.
Habt ihr noch weitere Vorschläge?
Gruß
Guggsdu
PS.: Ich habs mal auf nem anderen Rechner im VS probiert. Dort geht's auch nicht. Ich habe dann mal im 'InitializeComponent'-Bereich unter dem UserControl den Eintrag gemacht:
_
this.userControl11.EnumProp = UserControl1.TestEnum.drei;_
Da kriege ich folgende Fehlermeldung:
**
The variable 'drei' is either undeclared or was never assigned.**
Gruß
Guggsdu
Dein Code funktioniert bei mir problemlos (VS.NET 2003) und auch im Designer merkt er sich problemlos jede Variable ...
"It is not wise to be wise" - Sun Tzu
Aha, ich habs:
Das enum muß außerhalb der Klasse definiert sein!
Is ja eigentlich auch klar: Ich versuche beim Erstellen einer KLasse auf einen Typ zuzugreifen, der erst innerhalb der Klasse definiert ist.
Na jedenfalls ist die Woche gerettet.
Gruß
Guggsdu
Gruß
Guggsdu
🙂 Hättst Du gleich geschrieben, dass Du das Enum innerhlab der Klasse definierst wärs sofort klar gewesen 🙂
"It is not wise to be wise" - Sun Tzu
Du kannst Enums auch innerhalb der Klasse definieren und dann über die Klasse drauf zugreifen:
public class MeineKlasse
{
public enum Tage
{
Montag,
Dienstag
}
}
Zugriff dann aber über den Klassennamen:
private void button1_Click(object sender, System.EventArgs e)
{
MessageBox.Show(MeineKlasse.Tage.Dienstag.ToString());
}
Mit freundlichen Grüßen
René Paschold
.NET Developer / Trainer / Speaker / Author /
Projectleader / Software-Architect
.blog http://www.rene-paschold.de/
.business http://www.smarthouse.de/
@Rene:
Aber der VS Designer wird damit wohl so seine Probleme haben. Bei einem Test mit VC# Express 2005 hat ich auch das Problem, das er das Formular nicht mehr laden konnte, wenn das Enum innheralb des Usercontrols definiert und eine betreffenden Eigenschaft mit dem Enum-Typ im Designer einen anderen Wert zugewiesen wurde. War das enum außerhalb des Usercontrols, gab es keine Probleme.
([bb]|[^b]{2})
... und genau das war auch mein Problem. Der Designer hat Späne gemacht, weil er eine KLasse mit Hilfe eines enums erstellen sollte, welches aber erst in der Klasse definiert wurde.
So erkläre ich mir das.
Gruß
Guggsdu
Gruß
Guggsdu