Von Form2 auf TextBox der Form1 zugreifen



  • Hallo

    hab eine Aufgabe, bei der ich nicht weiterkomme.

    Sie entwickeln in einer Windows-Form-Anwendung, in der das Hauptformular die Klasse Form1 ist. Auf dem Formular Form1 befindet sich eine Textbox textBox1. Sie haben außerdem in der Klasse Form1 ein Objekt der Klasse Form2 erzeugt. Sie möchten in der textBox1 der Klasse Form1 den Text „Hallo“ anzeigen, und zwar durch die Methode setTextBox1() der Klasse Form2. Schreiben Sie die notwendigen Ergänzungen und Korrekturen in den folgenden Quelltext:

    // Klasse Form1
    public partial class Form1 : Form
     {
       private System.Windows.Forms.TextBox textBox1;
       public Form1()
       {
         InitializeComponent();
         Form2 form2 = new Form2();
       }
     }
    
    // Klasse Form2
    public partial class Form2 : Form
    {
      public Form2()
      {
        InitializeComponent();
        setTextBox1();
      }
      public void setTextBox1()
      {
      }
    }
    

    Meine Lösung:

    public partial class Form1 : Form
    {
       private System.Windows.Forms.TextBox textBox1;
       public Form1()
       {
            InitializeComponent();
            Form2 form2 = new Form2(this);
            form2.Show();
            form2.setTextBox1();
       }
    }
    // Klasse Form2
    public partial class Form2 : Form
    {
        private Form1 form1;
        public Form2(Form1 form1)
        {
             this.form1 = form1;
             InitializeComponent();
             setTextBox1();
        }
    
        public void setTextBox1()
        {
             form1.setTextBox1("Hallo");
        }
    }
    

    Was hab ich falsch gemacht?

    Basher



  • fricky, bist Du das? 🕶



  • public void setTextBox1()
    {
         form1.setTextBox1("Hallo");
    }
    

    Du versuchst hier auf eine Methode namens "setTextBox1" in der "Form1"-Klasse zu zugreifen. Diese Klasse besitzt solch eine Methode jedoch nicht.
    Da du aber ein Objekt der Klasse "Form1" hast, kannst du auf diverse Eigenschaften zugreifen, wie z.B. die "Text" Eigenschaft. Dadurch kannst du folgendes schreiben

    public void setTextBox1()
    {
        form1.textBox1.Text = "Hallo";
    }
    

    Um das schreiben zu können, musst du "textBox1" aber public definieren, oder eine Methode in der "Form1"-Klasse schreiben, die Änderungen an "textBox1" zulässt.



  • Hmm okay, hab jetzt nicht so viel Ahnung von C#, hab das jetzt erstmal so geändert, wie du das gesagt hast, aber wie tu ich textBox1 in public definieren?

    Vielen Dank schon mal



  • private System.Windows.Forms.TextBox textBox1;
    

    zu

    public System.Windows.Forms.TextBox textBox1;
    


  • Alles klar, Vielen Dank...es geht


Anmelden zum Antworten