Wie kann ich eine TextBox "textBox2" aus dem "Programm" Klasse?
Wie Sie sehen können, sind die Klassennamen, die ich verwendet standardmäßig die Namen der Klassen von Visual C# generiert. Wie kann ich das ändern der Werte in eine TextBox mit dem Namen "textBox2" (dieses Textfeld platziert, in dem Form1-design bereits) aus dem "Programm" Klasse? Ich habe versucht, eine Menge Dinge und alles, was ich versucht die Ergebnisse in der Fehlermeldung (oder ähnlich): An object reference is required for the non-static field, method, or property 'WindowsFormsApplication1.Form1.textBox2'
Bitte, wenn Sie können, versuchen Sie, halten Sie Ihre Antworten einfach, danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ersten, Sie sollten generell keinen Zugriff auf Steuerelemente wie Textfelder aus Ihrem Programm Klasse. Stattdessen sollten Sie dazu in der Form1.cs-Datei. Form1 ist eine Klasse, und es hat einen geschützten Bereich für textBox2 so ist es unzugänglich, außerhalb der Klasse. Wenn Sie möchten, ändern Sie den Wert von Programm.cs, sollten Sie eine öffentliche Funktion zu Form1 hinzu, dass legt den Wert der textBos2.Text.
Zweitens, Sie scheinen zu sein, nur die Eingabe der Klasse Namen, anstatt den Namen der Instanz. Der Unterschied ist die Textbox ist eine Klasse, textBox1 und textBox2 sind Instanzen. Textbox.Text ist ungültig, da müssen Sie angeben, WELCHE textbox, die Sie versuchen zu bekommen, oder legen Sie den text für. Es ist das gleiche mit Form1.textBox2. Form1 ist eine Klasse und es gibt viele von Ihnen. Sie müssen geben Sie den Namen der Instanz des Formulars für den Zugriff auf die öffentlichen Mitglieder.
UPDATE:
Werde ich nur geben Sie eine kurze Erklärung des Unterschieds zwischen einer Klasse und einer Instanz einer Klasse statische Felder und nicht-statische Felder. Bitte verzeihen Sie jede wordiness.
Wenn Sie erstellen eine neue windows forms-Anwendung in Visual Studio erstellen einer Form1-Typ für Sie. Form1 ist eine Klasse. Das Programm verwendet dann Form1 erstellen einer Formular-Instanz und zeigt es an. Der code würde so Aussehen:
In diesem Fall wurde die form der Instanz. Erstellen Sie mehrere Instanzen von Form1. Jede Instanz wird die textBox2 Sie erstellt, das eine Instanz der Textbox-Klasse. Genau wie Sie zu tun haben, textBox2.Text um den text aus dem zweiten Textfeld Sie erstellt auf dem Formular müssen Sie angeben, bilden.textBox2 (oder Ihre öffentliche Methode, legt die textBox2.Text-Wert). Form1, obwohl es eine Nummer nach ist es eine Klasse, mit der form der Instanz. Sie haben die gleiche Beziehung wie Textbox und textBox2.
Nicht-statische member zugänglich sind eine Instanz. Statische Mitglieder zugänglich sind Klasse. Eine statische member können nicht auf nicht-statische member-es sei denn, es ist durch eine Instanz.
textBox2.Text="whatever..."
und ich bekomme eine Fehlermeldung.Form1 f1 = new Form1()
es erstellt eine Kopie von Form1, die nicht enthalten, die textBox2, dass ich Bearbeiten möchte.Müssen Sie eine Instanz Ihrer
Form1
um dies zu tun.Dann haben Sie, um eine public-Methode zum Zugriff auf Ihre textbox ist, denn es ist ein private member.
Form1.cs:
Schließlich:
Müssen Sie erstellen eine neue Instanz der
Form1
Klasse.Sie können nicht "erreichen", einer non static var ohne
new()
Value
zuText
. DankMachen textBox2 öffentliche oder interne. Zu tun, so passen die
Modifier
Eigenschaft, die es von den designer (Eigenschaften). Dann tun Sie dies im Hauptmenü von "Programm" Klasse:Dies ist ein absolut schlechtes design anyways.. Sagen Sie uns, warum Sie das wollen, würden wir hilfreich im Umgang mit dem eigentlichen problem.