Benutzer mit den meisten Antworten
Wie greift man auf ein selbst erstelltes Coponent Objekt zu?

Frage
-
Hallo NG,
Ich habe exemplarisch eine Komponente myComponent erstellt und in ein Formular gezogen. Wie kann ich nun in einer Methode im Formular auf diese Komponente zugreifen? Es gibt im Formular eine Collection components, doch in dieser ist mein selbst erstelltes myComponent nicht enthalten.
Hat jemand einen Tipp für mich?
Das obige Beispiel liefert auf dem Button Click nur das notifyIcon, jedoch nicht meine Komponente.
Vielen Dank und viele Grüße
Niels W.
Viele Grüße
Niels W.
Antworten
-
Hallo Niels,
ich hab mir mal ein Testprojekt angelegt und mir ne Component erstellt.
Das sieht bei mir dann aber etwas anders aus:
public partial class myComponent : Component { public myComponent() { InitializeComponent();// <- fehlt das bei Dir? } public myComponent(IContainer container) { container.Add(this); // <- fehlt das bei Dir? InitializeComponent(); // <- ?? System.Windows.Forms.MessageBox.Show("Test"); } }
Ich hab da noch eine Messagebox aufgerufen beim Start, die mir anzeigt ob die Component initialisiert wird.
Grüße
- Als Antwort markiert Niels_W Freitag, 25. Mai 2012 10:17
Alle Antworten
-
Hallo Niels,
ich hab mir mal ein Testprojekt angelegt und mir ne Component erstellt.
Das sieht bei mir dann aber etwas anders aus:
public partial class myComponent : Component { public myComponent() { InitializeComponent();// <- fehlt das bei Dir? } public myComponent(IContainer container) { container.Add(this); // <- fehlt das bei Dir? InitializeComponent(); // <- ?? System.Windows.Forms.MessageBox.Show("Test"); } }
Ich hab da noch eine Messagebox aufgerufen beim Start, die mir anzeigt ob die Component initialisiert wird.
Grüße
- Als Antwort markiert Niels_W Freitag, 25. Mai 2012 10:17
-
Hallo Niels,
verwende einfach this.myComponent1, denn diese Variable wird ebenfalls angelegt.
Die private Container Variable component wird vom Designer nur für Komponenten verwendet,
die einen Konstruktor mit IContainer haben, und sich dort eintragen:public MyComponent(IContainer container) { container.Add(this); }
Der einzige "Nährwert" zur Laufzeit besteht darin, dass für solche Komponenten Dispose beim Freigeben des Formulars aufgerufen wird.
Was dann Sinn gibt, wenn Du eine Komponente hast, die unmanaged Ressourcen verwendet.Mehr siehe Komponenten und Container, was aber erst Nutzen bringt, wenn Du spezielle Designer für die Komponente entwerfen willst.
Gruß Elmar
-
Das war es. Ich keine neue Komponente über den Dialog Neu in VS erstellt, sondern einfach eine Klasse erstellt und die Vererbung manuell eingetragen... Vielen Dank!!!
@Elmar Boye:
Ich hatte vergessen zu schreiben, dass ich auf die Komponente ohne Name zugreifen möchte (Alle Komponenten von meinem Typ in einem Formular). Der direkte Zugriff war mir durchaus klar. Aber dennoch vielen Dank für die Antwort!
Viele Grüße
Niels W.