Announcement

Collapse
No announcement yet.

Fensterln mit C#

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Fensterln mit C#

    Hallo zusammen,

    ich bin neu bei C# und .NET und hätte da mal eine Frage:

    Ich habe ein Hauptfenster und ein weiteres Fenster.

    Ich kann aus dem Hauptfenster das zweite Fenster erzeugen und aufrufen, ich kann aber nicht auf die Labels etc. des zweiten Fensters zugreifen.

    Weitere Frage: Wie kann ich aus meinem zweiten Fenster auf das Hauptfenster zugreifen? Ich möchte gerne die dort enthaltenen Datenbankkomponenten in Formular 2 mitnutzen.

    Bodo

  • #2
    Hallo,

    dafür gibt es mehrere Möglichkeiten. Wichtig ist, dass sich die Elemente nicht gegenseitig in die Quere kommen.

    Variante 1: Eigenschaften in Form2
    Du deklarierst Properties als öffentliche Schnittstelle für die lokalen Variablen. Einfaches Beispiel für den Inhalt einer TextBox:
    Code:
    //  Definition in Form2
    public string TextBoxText {
        get  {  return textBox1.Text;  }
        set  {  textBox1.Text = value;  }
    }
    //  Aufruf von MainForm aus
    Form2.TextBoxText = "was auch immer Du willst";
    Variante 2: Übergabe als Eigenschaft
    Diese Variante ist nicht schön, weil die Trennung der Form-Klassen aufgeweicht wird: Du deklarierst in Form2 ein Dataset als Eigenschaft und weist diesem von MainForm aus das Dataset zu, das dort schon existiert.
    Code:
    //  Definition in Form2
    private myDataSet ds;
    public string MyDataSet {
        get  {  return ds;  }
        set  {  ds = value;  }
    }
    //  Aufruf von MainForm aus
    Form2.MyDataSet = this.dataSet1;
    Variante 3: Übergabe per Methode
    Diese Variante bevorzuge ich, wenn mehrere Eigenschaften (beliebiger Art) gesetzt werden sollen.
    Code:
    //  Definition in Form2
    private int i1;
    private TextBox textBox1;
    public void Init(int iValue, string sValue) {
        i1 = iValue;
        textBox1.Text = sValue;
    }
    //  Aufruf von MainForm aus
    Form2.Init(714, "was auch immer Du willst";
    Variante 4: Getrennte Definition des DataSet
    Diese Variante erfordert etwas mehr Erklärung, ist aber für gemeinsamen Datenzugriff besser. Erstelle für das Dataset eine eigene Klasse (u.U. als Singleton) und greife von beiden Formularen darauf zu. Mit "passenden" Datensatzzeigern kann der Zugriff koordiniert werden.

    Jetzt musst Du überlegen, ob eine schnelle oder eine saubere Lösung wichtiger ist (und ob Du es nur für Dich oder für ein kommerzielles Programm brauchst).

    Viel Erfolg! Jürgen
    Zuletzt editiert von Jürgen Thomas; 14.04.2007, 10:11. Reason: Bei Variante 3 fehlte der Aufruf.

    Comment

    Working...
    X