Wie kann ich erfassen den Wert von einem Textfeld und verwenden Sie es als eine variable?
Lassen Sie mich Vorwort dies sagen, dass ich bin sehr neu in C# und ich bin die Umwandlung eines Programms von VB.net zu C#.
Arbeite ich in Visual Studio 2012
und-Führung SQL Server 2008R2
OK, Also ich habe ein Formular "Form1". auf diesem Formular ist ein Textfeld kann ein Benutzer ausfüllen, TextBox1. Nun möchte ich die Informationen in das Textfeld als variable zum abrufen von Informationen aus einer Datenbank, und füllen Sie ein Textfeld ("textbox2") auf ein anderes Formular (form2) das ist der code, den ich bin derzeit mit auf form 2
private void form2_Load(object sender, EventArgs e)
{
string Name = Form1.TextBox1.Text;
this.TBMainTableAdapter.FillBy(Name);
}
Ich habe auch versucht, laden Sie es wie folgt:
this.TBMainTableAdapter.FillBy(Form1.TextBox1.Text);
diese beiden geben mir die "Objekt-Referenz ist für einen nicht-statischen Feld... Fehler
In VB.Net es war viel einfacher, ich codiert es so, und es funktionierte perfekt.
Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.TBMainTableAdapter.FillBy(Me.ProjectDataset.TBName, TextBoxName.Text)
End Sub
Gibt es etwas, was ich bin fehlt in der code-behind? Ich habe versucht, ändern Sie den code auf der text-box
vom
public System.Windows.Forms.TextBox TextBox1;
zu
public static System.Windows.Forms.TextBox TextBox1;
Während diese gelöscht, bis der Fehler auf ziehen des variable, Sie warf ein paar mehr Fehler in der code-behind auf Formular 1, "kann nicht zugegriffen werden, mit einer Instanz, geben Sie es ein nametype" Fehler
Wäre es Wert, es zu ändern alle Fehler, die sich auf den code hinter. und noch wichtiger ist, dass der richtige Weg, dies zu tun?
OK also ich habe diese 2 unter
public partial class Form1 : Form
Form1 form1;
public Form2(Form1 frm)
{
form1 = frm;
}
Form2 frm = new Form1(this);
Im immer die "- Methode muss einen Rückgabetyp-Fehler" im "Public Form2(Form1 frm)" line
und
"Fehler Namespace.Form1 nicht über einen Konstruktor verfügen, nimmt 1 Argumente" an die Form2 frm = new Form1(this); Zeile
auch wenn ich die get-Eigenschaft in Form1, bekomme ich eine Fehlermeldung zu deklarieren 2 Objekte mit dem gleichen Namen. Kann nicht finden, überall, in der Sie deklariert TextBox1 außer in der code-behind-wo das erklärte am Ende der code-behind-als
public System.Windows.Forms.TextBox TxtBox1
und wenn ich die getter unten, dass ich eine einzige Aufgabe, Anruf, usw. können verwendet werden, als eine Anweisung Fehler
- Sie wollen nicht, um Ihren
TextBox
statisch. noch stärker, nicht ändern Sie Ihren code hinter, wenn Sie nicht wissen, was Sie tun. es ist automatisch generiert und änderungen könnten verloren sein im langen Lauf - Ihren code nicht zeigen, die Deklaration von Form1, aber ich gehe davon aus Form1-Klasse ist der name des Formulars (wie "public partial class Form1 : Form"). Wenn ja, dann ist Form1.TextBox1 funktioniert nicht. Sie können nicht verwenden den Namen der Klasse, zu versuchen, den Zugang eines Mitglieds einer Instanz der Klasse.
- MuhammadHani, dass wird nicht funktionieren, weil TextBox1 auf eine andere form als die, die ich rufe es aus.
- Mbeckish. genau richtig, das ist, wie seine erklärte. also dann, wie würden Sie rufen es aus einem anderen Formular?
- Siehe Nikola Davidovic ' s Antwort weiter unten.
- möglich, Duplikat der wie, um einen Wert zurückzugeben von Haupt-Formular, um eine abweichende form oder Klasse(C#)
- Ich sehe, wie das Konzept ist das gleiche, wenn ein Wert von einer form zur anderen, aber ich kann nicht herausfinden, wie zu übersetzen, dass der Wert, der zurückgegeben wird, in die Funktion "zählen" zu dem, was ist, trat in mein Textfeld. Ive gelungen, eine Methode aus einer anderen form eine variable einfügen und return ein Ergebnis von einer Funktion, aber für das Leben von mir, ich kann nicht es zu Lesen, was in das Textfeld eingegebene
- Haben Sie follow @NikolaDavidovic Vorschlag und stellen Sie sicher, dass Sie mit einem Verweis auf die ursprüngliche form, und nicht nur das instanziieren einer neuen Kopie des Formulars?
- versucht. Hinzugefügt die info, die ich in meinem Formular und die Fehler, die ich bin immer oben...
- Der code sagte Sie, Sie Hinzugefügt, um die Form1 Hinzugefügt werden soll Form2 statt. Sorgfältig befolgen, was ich dir gesagt habe zu tun ist und wo Sie den code einfügen!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie einen Verweis auf die Form1 in deiner Form2-Objekt, um den Inhalt des Steuerelements aus der Form1. Darüber hinaus werden Ihre textBox1 sollte als public deklariert oder erstellen Sie die getter-Eigenschaft für Sie. Sie können eine Menge Dinge, aber wenn Form1 benötigt wird in der Form2, dann die einfachste Sache, die Sie tun können, ist zu passieren der Verweis auf Form1 durch den Konstruktor von Form2.
Fügen Sie die getter-Eigenschaft für die textBox1 in Form1:
Können Sie rufen diesen Konstruktor von Form1 Methode wie diese:
und dann könnte man nennen:
Vielleicht bin ich etwas fehlt, aber die Methode
FillBy
nimmt zwei Parameter, der erste ist derDataTable
zu füllen und die zweite dieName
, so ändern Sie es:Die Methode mit einem parameter
TBMainTableAdapter.Fill(DataTable table)
.Edit: übersehen, dass Sie auf Form2 aber die
TextBox
ist Form1 als Nikola hat darauf hingewiesen, dass das natürlich ein wichtiger Umstand. Ich halte diese Antwort, da könne es hilfreich sein, sowieso.