Klassen Variable über Forms

  • VB.NET

Es gibt 37 Antworten in diesem Thema. Der letzte Beitrag () ist von jvbsl.

    Also. Das ausgeben in Form4 geht ohne Probleme. Nur in Form5(was ja eben mein anliegen ist, wie übergebe ich Variabeln Formübergreifend/ mit form4.user... scheints ja nicht zu gehen) gehts nicht. Da hab ichs ja in nem Try block und da kommt die im zuvor geschriebenen Post gennante Fehlermeldung.

    Mfg
    Hat ich zwar 4-5 Posts vorher schon geschrieben, aber wenn du schon so nett bist mir zu helfen für dich gern nochmal :)
    Form4

    VB.NET-Quellcode

    1. Public user As CUser



    VB.NET-Quellcode

    1. Try
    2. user = CSystem.loadUser(ListBox1.SelectedItem)
    3. MsgBox("Das Profil " & user.Username & " wurde erfolgreich geladen!", , "Erfolgreich")
    4. TextBox1.Text = ListBox1.SelectedItem
    5. MsgBox(ListBox1.SelectedItem)
    6. Me.Visible = False
    7. Catch ex As Exception
    8. MsgBox(ex.Message)
    9. End Try




    Form5

    VB.NET-Quellcode

    1. Try
    2. MsgBox(Form4.user.Username)
    3. user = CSystem.loadUser(Form4.user.Username)
    4. Me.TextBox1.Text = Form4.user.Username
    5. Catch ex As Exception
    6. MsgBox(ex.Message)
    7. End Try
    Mal ein ganz einfaches Bsp für dich:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Public myUser As User
    3. Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click
    4. Me.Text = "Lets Open Form2 with myUsers Username as Title"
    5. Threading.Thread.Sleep(500)
    6. Form2.ShowDialog()
    7. End Sub
    8. Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    9. myUser = New User
    10. myUser.Username = "Ich DEPP"
    11. End Sub
    12. End Class
    13. Public Class User
    14. Private _username
    15. Public Property Username()
    16. Get
    17. Return _username
    18. End Get
    19. Set(ByVal value)
    20. _username = value
    21. End Set
    22. End Property
    23. End Class
    24. Public Class Form2
    25. Private Sub Form2_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
    26. e.Graphics.DrawString(Form1.myUser.Username, Me.Font, Brushes.Black, 50, 50)
    27. End Sub
    28. End Class
    Das ist meine Signatur und sie wird wunderbar sein!
    hmm, glücklicherweise war ich zwischendurch in der Eisdiele, es hat sich ja nicht viel geändert.

    Auf Nachfrage uns endlich mal Dein Problem zu nennen, nachdem Du mittlerweile mit Deinen Form-Verwechselungen heftig Verwirrung gestiftet hast, postest Du den Code einfach noch mal . Das heisst dann:

    Helgon schrieb:

    Hat ich zwar 4-5 Posts vorher schon geschrieben, aber wenn du schon so nett bist mir zu helfen für dich gern nochmal :)


    Es ist absolut unklar wo Dein user

    VB.NET-Quellcode

    1. Public user As CUser

    überhaupt deklariert (FORM4 ?) ist und wo er deserialisiert wird (FORM4+FORM5 ?), ebenfalls an welchem statement der Fehler auftaucht.

    Nach intensiver Befragung meiner Glaskugel bin ich der Meinung, dass es

    VB.NET-Quellcode

    1. Try
    2. MsgBox(Form4.user.Username)
    3. FORM4.user = CSystem.loadUser(Form4.user.Username) '<------
    4. Me.TextBox1.Text = Form4.user.Username
    5. Catch ex As Exception
    6. MsgBox(ex.Message)
    7. End Try

    heissen muss, und dass 2012 natürlich die Welt untergehen wird ...

    @Mono "myUser.Username = "Ich DEPP" :thumbsup:
    "
    Hatte leider wenig Zeit... konnte nicht früher antworten, aber hab bisschen rumprobiert.

    Wenn ich z.B. einfach nur den Text aus einer TextBox formübergreifend haben möchte geht das nur wenn der text vorher festgelegt wurde (also im visual studio). Wenn ich den inhalt in der laufzeit änder und versuche dann z.b. mit Form4.textbox1.text auzulesen klappt es nicht. Geht nur wenns vorher festgelegt wurde.

    Kann mir jemand sagen, warum das so ist?
    Könnte vllt zur Lösung meines Problems beitragen :)

    Mfg
    Öhm..:)

    was soll ich import->imports? wie meinst du das
    Hab einfach ne neue Klassen Datei erstellt (ka wie mans hier nennt, wie ne header in cpp eben/ die datei heist einfach Class1.vb)
    muss ich diese importieren in der form wo ichs brauche? in form4 bei laden/speichern ists ja auch nicht notwendig.

    Ist bisschen neu für mich das ganze vb mit oberfläche und co geklicke :P kenn da nicht alles^^

    Könnt ihr vllt bisschen genauer sagen was ihr meint? ;)

    Mfg
    Ähm,

    Helgon schrieb:

    Public user As CUser
    erzeugt das ne richtige Instanz??
    Probier ma bitte

    VB.NET-Quellcode

    1. Public user As New CUser
    8o
    Und dann, wie mehrfach beschrieben Zugriff mit

    VB.NET-Quellcode

    1. Form4.user.Variablebla
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:

    Öhm..:)

    was soll ich import->imports? wie meinst du das
    Hab einfach ne neue Klassen Datei erstellt (ka wie mans hier nennt, wie ne header in cpp eben/ die datei heist einfach Class1.vb)
    muss ich diese importieren in der form wo ichs brauche? in form4 bei laden/speichern ists ja auch nicht notwendig.

    Ist bisschen neu für mich das ganze vb mit oberfläche und co geklicke :P kenn da nicht alles^^

    Könnt ihr vllt bisschen genauer sagen was ihr meint? ;)

    Mfg


    ich wollte nur den Vorposter verbessern, helfen tut es dir immernoch nicht, aber das von Vatter sieht mir doch sehr stark nach ner Lösung aus(hättest du auch im Einzelschrittmodus rausfinden können...)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---