Variable für mehrere Forms

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von StylerX.

    Variable für mehrere Forms

    Hallo zusammen,

    ich hab das Problem, dass ich eine Variable (Spielername) und "Power" auf mehreren Formen verwenden möchte.
    Jetzt habe ich gelesen, dass man hierfür eine Klasse anlegen soll.

    Das hab ich auch gemacht. Darin sind die variablen definiert und ich kann die von allen Forms aufrufen.
    Wie aber weise ich den Variablen neue Werte zu?

    Auf Form1 verwende ich "Spielername" und setze "Power" auf 10
    Auf Form2 kann ich die Variablen wieder verwenden allerdings sind diese jetzt leer.

    Wie werden die Werte gespeichert?

    Dann hab ich noch ne 2. Frage: Ist es sinnvoll eine progressBar in einer Klasse zu verwenden, damit auf allen Forms dieselbe verwendet wird und nicht jedes mal neu eine eingegeben werden muss? Oder ist das gar nicht möglich?

    Ich habe gestern über 3 Stunden gesucht, aber nichts gefunden was ich verstanden hätte :(
    Also soetwas sind Grundlagen.

    Schaffe dir ein Buch an. Dann wird dir alles klar.

    3 Stunden Buch Lesen hätte mehr geholfen...


    Zu deiner Frage:

    Wenn Die Variable Puplic ist kannst du sie von jeder Form aus ansprechen.

    VB.NET-Quellcode

    1. 'Form1
    2. Dim NichtÜberall As String
    3. Puplic Überall As String
    4. 'Aufruf von Form2
    5. Form1.Überall

    MB-Tech schrieb:

    Also soetwas sind Grundlagen.

    Schaffe dir ein Buch an. Dann wird dir alles klar.

    3 Stunden Buch Lesen hätte mehr geholfen...


    Zu deiner Frage:

    Wenn Die Variable Puplic ist kannst du sie von jeder Form aus ansprechen.

    VB.NET-Quellcode

    1. 'Form1
    2. Dim NichtÜberall As String
    3. Puplic Überall As String
    4. 'Aufruf von Form2
    5. Form1.Überall
    So weit so klar :) aber. Wenn ich jetzt auf FORM3 den Wert überall ändern möchte? wie ruf ich den dann korrekt auf FORM2 auf?
    Form1.überall ist ja in dem Fall falsch. Deshalb dachte ich man muss da mit Klassen machen.

    In der Form hab ich das schon, aber irgendwie muss das doch "überichtlicher" gehen?
    bisher habe ich: überall.value = form1.überall.value das funktioniert auch, aber wie gesagt ich will nocht überall FORM1 davor schreiben. Und wenn ich dann auf FORM3 was änder komm ich durcheinander.
    Vielen Dank für die Hilfe, aber genau jetzt kommt das Problem. Vielleicht bin ich einfach zu doof :(

    Bei mir sieht das jetzt testweise so aus was mach ich falsch?

    Public Class Form1

    Public pname As String

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    pname = "test"
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Form2.Show()
    End Sub
    End Class

    Auf Form2 sieht das dann so aus:

    Public Class Form2

    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Label1.Text = pname
    End Sub
    End Class

    hier kommt die Fehlermeldung pname wurde nicht deklariert...
    Ich hab die doch aber als public?

    Und wenn ich nun auf FORM2 sage DIM pname as string dann meckert vb: "Fehler 1 "pname" wurde nicht deklariert. Auf das Objekt kann aufgrund seiner Schutzstufe möglicherweise nicht zugegriffen werden.
    Aber ich hab doch auf FORM1 das deklariert und einen Wert zugewiesen. Deshalb dachte ich, man muss hier ne Klasse schaffen.

    Was ist mein Denkfehler?

    VB.NET-Quellcode

    1. Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. Label1.Text = Form1.pname
    3. End Sub
    4. End Class


    So muss es sein !
    Und unter Form1 einfach:

    pname =

    ohne was davor!

    MFG

    mcandy007 schrieb:

    VB.NET-Quellcode

    1. Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. Label1.Text = Form1.pname
    3. End Sub
    4. End Class


    So muss es sein !
    Und unter Form1 einfach:

    pname =

    ohne was davor!

    MFG


    Ok, hoffentlich nerv ich diesbezüglich das letzte mal...

    Wenn ich jetzt auf FORM3 den Wert änder und zurück auf Form 2 wechsle dann stimmt das doch nicht mehr?
    denn dann bräuchte ich ja Label1.Text = Form3.pname deshalb wollte ich die variable so haben, dass ich von überall ihren wert ändern kann und diesen bei bedarf einfach "nur" abrufen muss
    Wenn du eine "Globale" Variable haben willst, dann erstelle ein Modul:

    VB.NET-Quellcode

    1. Module wasauchimmer
    2. public ichbines as integer = 4
    3. End Module


    Diese Variable ist aus allen anderen Formen abruf- und veränderbar.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. ichbines = 3
    4. End Sub
    5. End Class


    LG, der_Kurt

    der_Kurt schrieb:

    Wenn du eine "Globale" Variable haben willst, dann erstelle ein Modul:

    VB.NET-Quellcode

    1. Module wasauchimmer
    2. public ichbines as integer = 4
    3. End Module


    Diese Variable ist aus allen anderen Formen abruf- und veränderbar.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. ichbines = 3
    4. End Sub
    5. End Class


    LG, der_Kurt


    Vielen Dank ! genau das hab ich gesucht. Ich hab nur irgendwo gelesen, dass man ne klasse brauch. aber das hat überhaupt nicht funktioniert... zumindest hab ich es nicht hinbekommen. Das mit dem Modul klappt. die Werte werden geändert. Vielen Dank nochmal.