Autor Beitrag
stigge
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 426

WinXP
Delphi 2007
BeitragVerfasst: Sa 11.08.07 15:44 
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: 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:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
Form myForm = new Form();
//  siehe das Beispiel beim PictureBox-Konstruktor
InitializePictureBox();
myForm.Controls.Add(PictureBox1);
myForm.Show();

Kannst Du Dir vorstellen, dass Du Dir auf diesem Weg selbst helfen kannst?

Gruß Jürgen
stigge Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 426

WinXP
Delphi 2007
BeitragVerfasst: Sa 11.08.07 17:13 
user profile iconJü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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 426

WinXP
Delphi 2007
BeitragVerfasst: Sa 11.08.07 17:44 
Und wie greif ich jetzt darauf zu? :oops:
Über myForm.picturebox1.... gehts auf jeden Fall nicht...
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Sa 11.08.07 18:45 
user profile iconstigge 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.:
    ausblenden 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) {
      //  jetzt kannst Du mit dieser PictureBox arbeiten
    }

  • 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:
ausblenden C#-Quelltext
1:
2:
public class MyForm : Form { ... mit eigenen Variablen ... }
MyForm myForm = new MyForm();

Gruß Jürgen