Attribut-Objekte? einheitlich ansprechen (z.B. über ein Array)?
-
Hi,
hab hier etwas wo ich wirklich am Verzweifeln dran bin und zweifle langsam auch schon ob es überhaupt eine Möglichkeit gibt. *g*
Also hier die Masterfrage: Wie krieg ich Attribut-Objekte in ein Array?
Hier ist der Part über den GUIButtons über eine XML-Datei eingelesen werden. Spreche ich nach der Deklaration einen Button direkt an, z.B. button1.Label = "Test", funktioniert das tadellos. Doch ich habe genau 37 von diesen Buttons und da wäre es schon sinnvoll die Buttons über eine Schleife ansprechen zu können. Z.B. mit einem Index wie bei einem Array: buttonArray[0].Label = "Test". Dabei dürfen die Buttons nach der Deklaration/Initialisierung auch nicht einfach in ein Array kopiert werden, denn ich brauche genau diese Objekte im Zusammenhang mit dem Attribut (das in eckigen Klammern), sonst funktioniert es nicht.
[SkinControlAttribute(101)] protected GUIButtonControl button1=null; [SkinControlAttribute(102)] protected GUIButtonControl button2=null; [SkinControlAttribute(103)] protected GUIButtonControl button3=null; [SkinControlAttribute(104)] protected GUIButtonControl button4=null;
Hat jemand dazu eine Idee, dass muss doch irgendwie gehen.
Hab auch schon probiert Referenzen, Pointern und einem Array zu arbeiten, aber irgendwie hab ich das auch nicht hinbekommen.Danke schonmal im Voraus, hoffe mir kann jemand helfen!
Gruß Nova
-
Novanic schrieb:
Hi,
hab hier etwas wo ich wirklich am Verzweifeln dran bin und zweifle langsam auch schon ob es ....
Erstaunt mich ehrlich gesagt das du auf die Objekte zugreifen kannst wenn sie noch nicht initialisiert sind. Wie ist den das Attribut genauer definiert?
-
Hi,
die Initialisierungsdaten werden aus einer XML-Datei geladen. Das geschieht über ein Interface. Ich denke das passiert in dieser Funktion:
public override bool Init() { return Load(GUIGraphicsContext.Skin+@"\cplanner.xml"); }
Auf jedenfall sind die Standard-Werte in einer XML-Datei definiert und per C# kann man dann die Werte der Buttons ändern, dass funktioniert ja auch alles.
Gruß Nova
-
Hm,
hab jetzt schon in mehreren Foren gefragt und keine weiß ne Lösung, gibt es denn keine C#-Master?
Falls es zu unverständlich ist, bitte einfach mal hier gucken, da ist ganz Unten ein Beispiel-Code der genau das enthält, was ich geschildert hab (mit den Buttons aus der XML-Datei parsen und auch mit den Zugriff auf den Buttons, aber wie kann ich über ein Array oder so auf die Buttons zugreifen?).
Link zum Mini-Sourcecode: http://mediaportal.sourceforge.net/PluginTutorial/PluginTutorial.htm
Gruß Nova
-
Mittels Form.Controls bekommst du eine Liste aller Controls des Formulars.
Dann brauchst du nur noch abprüfen, ob es ein Button ist, also z.B.foreach(Control c in this.Controls) { if(c.GetType() == typeof(Button)) { // tu, was du willst mit dem Button... } }
Um an die Attribute heranzukommen, mußt du dir mal die Klasse System.Reflection.MemberInfo ansehen.