Textbox von einer anderen Form zugreifen

  • VB.NET

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

    Textbox von einer anderen Form zugreifen

    Hey bin grad dabei nen Account Manager zu machen und habe jetzt eine Form die Spieleverwaltung heißt um die Buttons eigenständig zu benennen aber wie greife ich von z.b Form 2 ( Spieleverwaltung ) auf Form 1 ( Buttons ) zu und speichere dann diese ?
    @Nexis: Willkommen im Forum. :thumbup:
    Zwischen Forms sollte man nicht auf Controls zugreifen, sondern
    Properties abfragen (= Get)
    und
    Events senden (= Set).
    Gugst Du hier.
    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!

    Nexis schrieb:

    hab ja schon bereits beide ..
    Fein.

    RodFromGermany schrieb:

    Wir wollen vom 2. Dialog aus ein Event zur MainForm senden.
    Ich geh mal davon aus, dass Du Dich mit Properties auskennst.
    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!
    Also ich erklär nochmal bzw sag euch mal was ich schon habe:

    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
    In der

    Nexis schrieb:

    Spielverwaltungs Form
    musst Du ein Event deklarieren:

    VB.NET-Quellcode

    1. Public Event MyEvent(sender As Object, myEventParams As MyEventArgs)
    Mach Dir am besten eine eigene EventArgument-Klasse und pack da alles rein, was Du brauchst, z.B. so:
    MyEventArgs

    VB.NET-Quellcode

    1. Public Class MyEventArgs
    2. Inherits EventArgs
    3. Private _Index As Integer
    4. Public ReadOnly Property Index As Integer
    5. Get
    6. Return _Index
    7. End Get
    8. End Property
    9. Public Sub New(ind As Integer)
    10. Me._Index = ind
    11. End Sub
    12. End Class
    Aufgerufen wird das so:

    VB.NET-Quellcode

    1. RaiseEvent MyEvent(Me, New MyEventArgs(6))
    Um dies zu empfangen, musst Du Deine Form in der anderen Klasse mit WithEvents deklarieren.
    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!
    Bissle blöd auch für andere Menschen, die evtl. das selbe Problem haben und kurz vor der Lösung hört es hier auf. Das ist ein Forum. Ein Forum ist nun mal was für alle Menschen, die sich für die gleiche Sache interessieren. In einem Forum tauscht man öffentlich seine Gedanken aus. Schon ein etwas egoistisch, findest nicht?
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    enIking1998 schrieb:

    Form1.TextBox1.Text = "STRING" ...
    So greifst Du auf Controls, die einer externen Form inne wohnen, zu ...
    Kannst Du vielleicht auch mal keinen Schrott von Dir geben?
    Gugst Du hier.
    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!
    Nun gut, da ich gerade Zeit habe, hier eine Schritt für Schritt Anleitung:
    1. Du gehst in deine Form, von wo aus du Sachen der Hauptform verändern willst. Um alles besser zu verstehen, nenne ich die Hauptform frm_main und die Einstellungsform frm_settings.
    2. In der frm_settings schreibst du da, von wo aus du Member-Variablen deklarierst (Variablen, auf die alle Methoden innerhalb der Klasse zugreifen können):

    VB.NET-Quellcode

    1. Public Event ChangedEvent(sender As Object, Control As MeinKontrol, NewValue As String) 'man kann es auch so machen wie RodFromGermany, finde ich aber bei wenigen Werten eher unnötig

    Außerdem brauchen wir ein Enum:

    VB.NET-Quellcode

    1. Public Enum MeinKontrol
    2. Button_OK
    3. End Enum

    3. Wenn von der frm_setting aus etwas in der frm_main verändert werden soll, schreibst du folgendes:

    VB.NET-Quellcode

    1. RaiseEvent ChangedEvent(Me, Button_OK, "Der neue Text")

    4. Jetzt gehen wir in die frm_main und schreiben zum öffnen der frm_setting folgenden Code:

    VB.NET-Quellcode

    1. Dim frm As New frm_setting
    2. Addhandler frm.ChangedEvent, AddressOf MeinTollesEvent
    3. frm.show 'oder .showdialog


    Jetzt brauchen wir noch die Sub in der frm_main:

    VB.NET-Quellcode

    1. Private Sub MeinTollesEvent(sender As Object, Control As MeinKontrol, NewValue As String)
    2. Select Case Contol
    3. Case fem_setting.MeinKonstol.Button_OK
    4. btn_test.Text = NewValue
    5. 'Hier jetzt deinem Button den neuen Text aus der NewValue zuweisen
    6. End Case
    7. End Sub


    Hab das gerade ausm Kopf geschrieben. Nicht C & Pn!

    Ach ja, noch ne Anmerkung:
    Du kannst, wie RFG schon angemerkt hat, einfach die frm_setting als WithEvents deklarieren, läuft aber ungefähr aufs gleiche hinaus.
    Mfg
    Vincent

    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.
    Also wenn du es ganz einfach und unsauber machen willst mach es so:

    VB.NET-Quellcode

    1. BeliebigeForm.TextBoxName.Text = "Beliebieger Text oder String..."

    Dieser Code ändert eben den Inhalt in einer TextBox von einer anderen Form
    Wenn du den Text nur auslesen möchtest musst du diesen Source verwenden:

    VB.NET-Quellcode

    1. Dim TextDerTextBox as String = BeliebigeForm.TextBoxName.Text

    LG ;)