Zauberwort um eine Variable stets sofort zu aktualisieren

  • VB.NET
  • .NET (FX) 4.5–4.8

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

    In wiefern aktualisieren?
    Ich kenn nur, dass man ihr direkt einen Wert zuweisen kann

    in etwa:

    Dim string As String = "test" oder verkürzt Dim string = "test"
    aktualisieren machst du ja in dem du sie nach der Deklaration verwendest und ihr einen neuen Wert zuweißt:

    VB.NET-Quellcode

    1. Dim string = "test"
    2. 'some Code
    3. string = "neuer test"
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:
    hey also ich meine zb. wenn du

    dim wort as string
    wort = "bla"

    buton1.text = wort

    wenn dann die variable wort geändert wird ändert sich der buton1.text sofort ohne das ein befehl dazu nötig ist

    Edit: habe das jetzt glaube ich herausgefunden:

    das zauberwort heißt static

    VB.NET-Quellcode

    1. Function bla(thissale As Integer) As Decimal
    2. Static totalsales As Decimal = 0
    3. totalsales += thissale
    4. Return totalsales
    5. End Function

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Visual_Prog“ ()

    Visual_Prog schrieb:

    wenn dann die variable wort geändert wird ändert sich der buton1.text sofort ohne das ein befehl dazu nötig ist

    Ich täte das ganze Objektorientiert und mittels Databinding machen...
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Nein. Static ist dafür da, dass man den Wert einer Variable, die man in einer Prozedur hat, auch nach Verlassen der Prozedur noch/wieder hat, wenn man die erneut Prozedur aufruft.

    VB.NET-Quellcode

    1. Private Sub Foo()
    2. Bar()
    3. Bar()
    4. Bazz()
    5. Bazz()
    6. End Sub
    7. Private Sub Bar()
    8. Dim Buz As Integer = 0
    9. MessageBox.Show(Buz.ToString) 'Es wird immer 0 ausgegeben.
    10. Buz += 1
    11. End Sub
    12. Private Sub Bar()
    13. Static Buz As Integer = 0
    14. MessageBox.Show(Buz.ToString) 'Es wird hochgezählt, da der Wert von Buz nicht verloren geht
    15. Buz += 1
    16. End Sub

    Das ist aber was anderes, als was in Post#1 als Anforderung steht.

    Visual_Prog schrieb:

    hey also ich meine zb. wenn du
    dim wort as string
    wort = "bla"
    buton1.text = wort
    wenn dann die variable wort geändert wird ändert sich der buton1.text sofort ohne das ein befehl dazu nötig ist

    Das geht nicht und das ist auch gut so. Sowas ähnliches in der Art geht zwar mit dem OnPropertyChanged-Event und Co. aber das ist recht komplex und ziemlich viel Schreibarbeit zu Beginn.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Visual_Prog schrieb:

    hey also ich meine zb. wenn du

    dim wort as string
    wort = "bla"

    buton1.text = wort

    wenn dann die variable wort geändert wird ändert sich der buton1.text sofort ohne das ein befehl dazu nötig ist


    Der einfachste Weg wäre, an dem Punkt, an dem du den Wert von "wort" änderst automatisch einen Refresh des Buttons anzufordern. Sprich du liest den Button automatisch neu ein (automatisch bedeutet eine Zeile Code aufgrund einer bestimmten Bedingung). Allerdings erschließt sich mir der Sinn nicht ganz. Vielleicht geht es auch anders allerdings muss man dafür wissen wozu es dienen soll. :S

    ThomasG82 schrieb:

    einen Refresh des Buttons anzufordern
    führt dazu, dass der Button neu gezeichnet wird, aber nicht, dass die Text-Property einen neuen Wert bekommt.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Für sowas könnte man unter den Projekteinstellungen eine Anwendungseinstellung "MyBottText" vom Typ String erstellen, einen Wert zuweisen und sowohl Button als auch Textbox und den Einstellungen beider Winform Elemente unter ApplicationSettings ein PropertyBinding auf diese Setting machen. Ob es das ist was gewünscht ist, keene Ahnung, geht aber.
    Ich frag mich, was es hier zu spekulieren gibt.
    Der TE hat doch gesagt, er habe gefunden, was er suchte: Es war das Zauberwort static
    Dass dieses Gefundene was komplett anderes ist als was er zuvor gesagt hat, was er suche tut ja nix zur Sache.
    Entweder er meldet sich, wenn sich zeigt, das wars doch nicht, oder er meldet sich nicht - dann hat er sich eben komplett verhauen in der Aufgabenstellung - aber sie nichtsdestotrotz für sich ja gelöst.
    Naja spekulieren würde ich es nicht nennen. Aber eine endgültige Lösung ist ja doch immer ganz schick. Und STATIC ist ja nun keine wirkliche Lösung. Und wer weiß, vielleicht kann man es ja Mal gebrauchen und kann hier schnell noch Mal nachschauen.

    Aber ja im Grunde hast du Recht - das Thema könnte auch geschlossen werden, im Notfall kann ja noch Mal geöffnet werden.