Textbox von einer anderen Form zugreifen

  • VB.NET

Es gibt 47 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    @sonne75 Aber das geht doch nur, wenn man etwas bei der aufgerufenen Form ändern will. Er will aber aus der Aufgerufenen Form etwas auf der Hauptform ändern. Denke aber schon, dass das einigermaßen sauber ist, da du ja Eigenschaften eines instanziierten Objektes änderst.

    @Bonnenstange12 Das hatten wir schon, hier soll niemand wollen, unsauber zu Coden, wenns eine bessere Lösung gibt. Lass es einfach, unsaubere Lösungen in irgendeinem Thread zu schreiben, wenn schon eine viel bessere vorgeschlagen wurde!
    Mfg
    Vincent

    sonne75 schrieb:

    Habe hier bei EDR (ich hoffe, es stimmt auch) gesehen, dass man doch direkt auf Controls zugreifen darf:

    VB.NET-Quellcode

    1. Using fRoomNr As New frmRoomNr
    2. fRoomNr.ShowDialog(Me)
    3. Roomnumber = fRoomNr.txtRmNr.Text
    4. End Using

    Darf ich das? Hatte vorher Events drin, aber nachdem ich das so gelesen habe, habe ich doch direkt gelöst.

    Ich wüsste nicht warum nicht. Du hastne Instanz einer Klasse und greifst auf deren Property zu, geht doch

    VincentTB schrieb:

    @sonne75 Aber das geht doch nur, wenn man etwas bei der Aufgerufenen Form ändern will. Er will aber aus der Aufgerufenen Form etwas auf der Hauptform ändern. Denke aber schon, dass das einigermaßen sauber ist, da du ja Eigenschaften eines instanziierten Objektes änderst.


    Nein, ich mache genau umgekehrt. Ich rufe aus der Hauptform die andere Form auf und setze eine Property der Hauptform mit dem Text aus der 2.Form.
    Für mich klingt es, als ob er die Daten von instanzierten Form braucht um Namen der Buttons in der Hauptform zu ändern:

    Nexis schrieb:

    Wenn ich in der Hauptform auf Spiel 1 Klicke kann ich meine daten eingeben ( pass´, email, name ) und auch abspeichern..


    So jetz will ich so machen das wenn ich auf die Spielverwaltungs Form gehe die namen der Buttons in der Hauptform verämdern kann


    @VincentTB
    Wozu dann Events, wenn es einfacher geht?
    @Nexis: Dein Problem liegt wahrscheinlich darin, dass Di iwo gesehen hast, dass da

    VB.NET-Quellcode

    1. Form2.TextBox1.Text = "Bla"
    oder so steht.
    Dies ist lediglich der VB6-Kompatibilitätsmodus von VB.NET, dazu gibt es keinerlei Entsprechung in C#, ist also primär nicht .NET-konform.
    Deswegen der ganze Psalm mit Events und Co.
    ----
    Übrigens sollten Events ein Sender As Object sowie ein e As XxxEventArgs haben, wobei XxxEventArgs die Basisklasse [b]EventArgs[/b] oder eine von ihr abgeleitete Klasse ist.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Du kannst nicht aus einer Form, die die aus der Hauptform aufgerufen hast, auf die Elemente dieser Hauptform zugreifen, sie ist in der Hierarchie doch weiter oben. Du kannst so machen, wie ich es gemacht habe: erst frm1 (als Objekt! Vorher mit Dim frm1 As New Form1 instanzieren) mit ShowDialog(Me) aufrufen und danach auf die Elemente dieser frm1 zugreifen (frm1.Spielvertextbox1.Text)

    VB.NET-Quellcode

    1. Dim frm1 As New Form1
    2. frm1.ShowDialog(Me)
    3. Spiel1.Text=frm1.Spielvertexbox1.Text
    Es klappt, aber es ist falsch, wie man dir schon mehrmals gesagt hat. Es klappt nur, weil es zu VB6 kompatibel ist. Aber wenn du die Grundsätze nicht verstanden hast, wirst du nicht programmieren können.
    In dem Link vom Rod (gleich am Anfang) ist es doch ganz genau erklärt, warum.

    Nexis schrieb:

    Hä klar klappts o.o also mein code da oben funktioniert
    Ist aber Ranz-Code. X(
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Entweder du lernst VB.Net (und bekommst von uns Hilfe) oder du lernst ein Zwischending von VB.net und VB6 und wirst niemals OOP verstehen, eben weil VB6 OOP nicht kennt. (weißt du eigentlich, was OOP ist?)

    Wir sind eig. ziemlich nett, aber wenn ich zB. sogar ein Tutorial schreibe und du trotzdem eine VB6 Lösung nimmst, dann frage ich mich, wieso ich überhaupt dir helfen soll.
    Mfg
    Vincent

    Also tut mir echt Leid das ich da eben unsauberen Code gepostet habe *hust*

    Aber Leute ich glaube der Threadersteller ist Anfänger und lernt gerade die Grundlagen... Wenn er besser programmieren kann könnt ihr ihm ja nochma die komplexe Lösung vorschlagen :)