2017-01-19 4 views
0

Ich bin neu bei vb.net also vergib mir, wenn dies eine einfache Frage ist.Zugriff auf Textfeld auf Form1 von Form2

Ich habe ein Klassenbibliotheksprojekt erstellt, das zwei Windows-Formulare enthält, Form1 und Form2. Die Hauptklassenbibliothek hat das Ereignis, um Form1 zu öffnen. Eine Schaltfläche auf Form1 startet Form2. Der Großteil des Codes befindet sich in Form1, was ich nicht ändern möchte, wenn ich ihm helfen kann.

Was ich versuche zu tun, ist Zugriff auf ein Sub, das auf Form1 von Form2 ist. Diese Untergruppe ändert den Wert eines Textfelds in Form 1. Ich erhalte keine Fehler, wenn ich das Projekt kompiliere, aber nichts passiert. Hier

ist ein Beispiel

Form1:

Public Sub test() 

    Me.Panel1.Controls("Textbox1").Text = "Test" 

End Sub 

Form2:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 

    Dim MainForm As New Form1 
    Me.Close() 
    MainForm.test() 


End Sub 

Sie nicht verfangen, wie ich es gebaut aus, ich habe über 20 verschiedene versucht Dinge und das ist, wo ich jetzt bin.

Ich habe versucht, Form1 im Untertest() zu definieren. Ich habe versucht, sub test() zu teilen. Ich habe versucht, Form2 zu schließen und Form1 zu aktivieren. Ich habe versucht, die Modifikationseigenschaft des Textfelds in public zu ändern. Ich habe versucht, Form1 das Elternteil und Form2 ein Kind zu machen (ich verstehe MDI wirklich nicht sehr viel). All diese Ergebnisse enden in einem Projekt, das kompiliert wird, aber mir keine Ergebnisse liefert. Mein Code greift auf das Sub-Objekt gut zu, es wird nicht auf die Texteigenschaft des Textfelds zugreifen.

Alle Vorschläge helfen. Ich versuche, auf die Textfelder zuzugreifen, so dass ich sie alle durchlaufen kann. Zum Beispiel: Me.Panel.Controls ("Textbox" & i) .Text = "Etwas". Außerdem möchte ich das Sub in der Klasse für Form1 behalten, wenn ich kann.

Alle Vorschläge wären großartig!

+0

Warum möchten Sie anrufen die Methode 'test' aus' Form2'? Was ist daran wichtig? – Bugs

+0

Für den Zugriff auf alle 'TextBoxes' auf' Panel'. 'Für jeden t In Panel.Controls.OfType (Of TextBox)()' können Sie dann die Eigenschaften von 't' festlegen. – Bugs

Antwort

0

Sie eine brandneue Form1 in Form2 zu schaffen, das ist das Problem.

Verwenden Sie einfach:

Call Form1.test()

By the way, ich denke, dieser Code in der Sub ist ein einfacher Weg, um den Text zu setzen:

Panel1.TextBox1.Text = "Test"

Verwandte Themen