Entwickler-Ecke
WinForms - Neues Objekt auf erstellter Form erstellen
stigge - Sa 11.08.07 15:44
Titel: Neues Objekt auf erstellter Form erstellen
C#-Quelltext
1: 2:
| Form myForm = new Form(); myForm.Show(); |
Ich erstelle hiermit eine neue Form und lasse sie anzeigen.
Wie kann ich jetzt darauf ein Objekt (picturebox) erstellen?
Stigge
JüTho - Sa 11.08.07 17:10
Hallo,
solche Fragen kannst Du Dir (fast) immer selbst beantworten.
1. Möglichkeit: Benutze den Designer, lies danach in der
Designer.cs den Code, den der Designer erzeugt hat, und nutze solchen bzw. ähnlichen Code in Deinem eigenen Quelltext.
2. Möglichkeit: Benutze die
SDK-Doku, suche die Klasse - z.B. Informationen zur PictureBox-Klasse - übernimm den Quelltext aus dem meistens vorhandenen Beispiel. Sofern noch erforderlich, musst Du das Control Deinem Formular hinzufügen, z.B. so:
C#-Quelltext
1: 2: 3: 4: 5:
| Form myForm = new Form(); InitializePictureBox(); myForm.Controls.Add(PictureBox1); myForm.Show(); |
Kannst Du Dir vorstellen, dass Du Dir auf diesem Weg selbst helfen kannst?
Gruß Jürgen
stigge - Sa 11.08.07 17:13
JüTho hat folgendes geschrieben: |
Kannst Du Dir vorstellen, dass Du Dir auf diesem Weg selbst helfen kannst?
|
Jo, kann ich, habs aber diesmal nicht geschafft was zu finden. Auf jeden Fall danke!
stigge - Sa 11.08.07 17:44
Und wie greif ich jetzt darauf zu? :oops:
Über myForm.picturebox1.... gehts auf jeden Fall nicht...
JüTho - Sa 11.08.07 18:45
stigge hat folgendes geschrieben: |
Und wie greif ich jetzt darauf zu? :oops:
Über myForm.picturebox1.... gehts auf jeden Fall nicht... |
Dafür gibt es die Sichtbarkeitsregeln. Auf die PictureBox kannst Du so zugreifen wie auf jede andere Eigenschaft der betreffenden Klasse. Bei Deinem kleinen Schnipsel kann ich keine endgültige Antwort geben.
- Wenn PictureBox1 innerhalb der zugreifenden Klasse definiert wurde, steht sie dort weiterhin zur Verfügung.
- Da Du nur eine Instanz der Form-Klasse erzeugst, kann sie innerhalb von myForm natürlich nicht bekannt sein.
- Du kannst nach der PictureBox1 innerhalb der Form.Controls suchen, z.B.:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| PictureBox myPict = null; Control[] coll = myForm.Controls.Find("PictureBox1", true); if (coll != null && coll.Length > 0) { foreach(Control ctrl in coll) { if (ctrl is PictureBox) { myPict = ctrl; Break; } } } if (myPict != null) { } |
- Bitte beachte, dass auf Elemente eines "außerhalb der rufenden Klasse stehenden" Formulars grundsätzlich nicht direkt zugegriffen werden sollte, sondern über Variable oder Methoden als Schnittstellen.
Aber Dein Hauptproblem dürfte sein, dass Du ein einfaches Formular erzeugen willst. Vermutlich führt Dich folgende Lösung weiter:
C#-Quelltext
1: 2:
| public class MyForm : Form { ... mit eigenen Variablen ... } MyForm myForm = new MyForm(); |
Gruß Jürgen
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!