Zum Inhalt springen

[C#] Frage zu Control.Tag


Empfohlene Beiträge

Geschrieben

Hallo!

Ich bin gerade dabei einen Formular-Designer zu entwickeln und benutze dazu ein panel, auf das ich einfach normale Controls binde. Diese Controls (z.B. PictureBox, Label, ...) bekommen dann ein spezielles Objekt, in dem Werte für das Formular stehen, als Tag (also label1.Tag = new FormPropertiesObject()). In diesem FormPropertiesObject möchte ich nun irgendwie auf das übergeordnete Objekt zugreifen (hier also die Listbox). Wie kann ich das umsetzen?

P.S.: Ich möchte beim Erstellen des Labels das Label-Objekt nicht an das FormPropertiesObject übergeben...

Um das ganze etwas klarer zu machen ein paar Code Beispiele:

Was ich nicht möchte:

Label label1 = new Label();

FormPropertiesObject frmProp1 = new FormPropertiesObject(label1);

label1.Tag = frmProp1;

sondern einfach nur:

Label label1 = new Label();

label1.Tag = new FormPropertiesObject();

und innerhalb des FormPropertiesObject dann irgendwie via Label label1 = (Label) this.parent;

Wie kann ich diese parent-Eigenschaft umsetzen?

Geschrieben

Hallo!

Das geht nicht. Wenn Du von Deinem FormPropertiesObject auf andere Objekte zugreifen willst, mußt Du eine Referenz auf diese Objekte übergeben oder eine Referenz an geeigneter Stelle aufbewahren. Wie soll Diene Klasse auch sonst wissen, welches Label Objekt sie zugreifen soll? Du wirst also eine Referenz übergeben müssen.

Du könntest es so lösen, indem Du das Label.Tag nicht als Variable sondern als Proprety implementierst und beim set Aufruf dieses Properties eine Referenz in das dazugehörige FormPropertiesObject einträgst. Es würde dann auf das hinauslaufen, was Du nur tippen möchtest, so wird aber trotzdem eine Referenz übegeben.

Geschrieben

ja, aber dann müsste ich ja ein neues Control entwerfen welches System.Windows.Forms.Label implementiert. Da ich nicht nur ein Label verwende, sondern auch noch Panels und PictureBoxes, ist der Aufwand nicht gerechtfertigt.

Geschrieben

Du mußt eine Referenz übermitteln - wie Du das machst ist egal. Ohne geht's nicht...

Gut, anderer Vorschlag:

Wenn Du Windows.Forms benutzt, kannst Du grundsätzlich auf die übergeordentetn Container eines Controls zugreifen (über die Parent Property). In diesem Parent (z.B. dem Form) kannst Du nun einen Verweis auf ein Objekt unterbringen, in dem die Daten, auf die zugegriffen werden sollen, untergebracht sind.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...