Variablen in andere Formen übertragen??

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von LaMiy.

    Variablen in andere Formen übertragen??

    Hallo, ich bin hir neu und habe mal ne frage:
    Wen ich 2 Foren habe und Eine Infomation von Form 1 in Form 2 mit einer Variable übertragen will wie geht das?
    z.b.
    (in Form 1)

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim Punkte As Integer = 0
    3. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    4. Punkte = Punkte + 1
    5. End Sub
    6. End Class


    (in Form 2)

    VB.NET-Quellcode

    1. Public Class Form2
    2. Private Sub Punkte_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Punkte.Tick
    3. TextBox1.Text = Punkte
    4. End Sub
    5. End Class


    Mein Probelm ist wie kann ich die Variable in Form 2 übertragen?
    (ist zwar jetzt nur ein grobes Beispiel aber ich hoffe ihr könnt mir helfen 8o )
    Das verstehe ich nicht was soll mir das bringen? meine frage war doch ganz anders
    und

    "Puplic variable As String"


    geht auch nicth weil wen ich es benutzen will (in Form 2) dan kommt die Felder meldung
    "Der Wert von Typ "System.Windows.Forms.Timer" kann nicht in "String" konvertiert werden."
    Hast du ganz oben Option Strict On geschrieben?
    In VB gibt es Typen. Und das musst du beachten. In PHP, Javascript,... gibt es das nicht. Dort kann $i ne Zahl, Text oder ne Datenbankverbindung sein. Hier geht das nicht.
    Deshalb oben immer Option Strict On hinschreiben. Dann: [VB 2010] Instanziierung von Forms und Aufruf von Dialogen ist sehr wichtig.
    Die ganze Scheiße wie Form1.Show, Form2.Show ist totaler crap und kannste gleich vergessen.
    Du musst die Form immer instanzieren. Das heißt:

    VB.NET-Quellcode

    1. Dim frm As New Form1()
    2. frm.Show()

    Und wenn z.B. eine zweite Form auf dein Hauptfenster zugreifen soll, dann musst der zweiten Form sagen was dein Hauptfenster ist.
    z.B. durch

    VB.NET-Quellcode

    1. Dim frm As New Form1()
    2. frm.MainWindow = Me
    3. frm.Show()


    Das ist nicht sonderlich schön, aber es soll mal das Grundprinzip verdeutlichen.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „thefiloe“ ()

    Schreib am Anfang des Codes "Option Strict On".


    Zitat von RodRromGermany:

    Option Strict On
    sorgt für eine Typprüfung bei der Eingabe
    txt = Wert (String = Integer) wird dadurch z.B. verboten
    Option Strict Off
    würde automatisch im Hintergrund
    txt = Wert.ToString draus machen.
    Arbeite mit Option Strict On
    und Du musst keine dummen Fragen an das Forum stellen, deren Antwort
    Option Strict On wäre.
    "Main Window" finde ich auch nicht.
    Besser ist, wenn du mit "Using" arbeitest.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Public punkte As Integer = 5
    3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    4. punkte = 10
    5. Using frm As New Form2
    6. frm.ShowDialog(Me)
    7. End Using
    8. End Sub
    9. End Class

    VB.NET-Quellcode

    1. Public Class Form2
    2. Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. Dim frm As Form1 = Form1
    4. MessageBox.Show(CStr(frm.punkte))
    5. End Sub
    6. End Class
    @LaMiy das was du da hinschreibst macht keinen Sinn!
    Form1 ist ein Typ!

    ComputerNoob schrieb:

    was mus ich daran anpassen?
    Du solltest zuerst Grundlagen lernen. Du musst dem Typ Form1 die Eigenschaft MainWindow geben.
    Heißt:
    Public MainWindow As [Name des Types deines Hauptfensters]
    Wäre zwar besser als Property aber lassen wir mal weg.

    EDIT: Vll. nicht besonders schön aber dafür sehr einfach gehalten.
    Dateien


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „thefiloe“ ()

    LaMiy schrieb:

    VB.NET-Quellcode

    1. Public Class Form2
    2. Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. Dim frm As Form1 = Form1
    4. MessageBox.Show(CStr(frm.punkte))
    5. End Sub
    6. End Class
    Fast, eben nur fast. Form1 ist da die falsche Instanz, ShowDialog(Me) hat eine andere Bedeutung.
    @ComputerNoob: Da fehlt noch ein wenig, hättest eben mal meinen Thread lesen und verstehen sollen.
    Probier mal dies

    VB.NET-Quellcode

    1. Public Class Form1
    2. Public punkte As Integer = 5
    3. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    4. punkte = 10
    5. Using frm As New Form2(Me)
    6. frm.ShowDialog()
    7. End Using
    8. End Sub
    9. End Class

    VB.NET-Quellcode

    1. Public Class Form2
    2. Private frm As Form1
    3. Public Sub New(ff As Form1)
    4. InitializeComponent()
    5. frm = ff
    6. End Sub
    7. Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    8. MessageBox.Show(frm.punkte.ToString)
    9. End Sub
    10. End Class

    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!