Textbox Inhalt einem String zuweisen

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

Es gibt 25 Antworten in diesem Thema. Der letzte Beitrag () ist von gamer29016.

    @gamer29016 ReadOnly-Variablen musst Du im Konstruktor Sub New() belegen.
    Form_Load ist zu diesem Zeitpunkt noch lange nicht aufgerufen worden.
    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!
    Lies nochmal:

    RodFromGermany schrieb:

    Die Reihenfolge von Klassen-Deklarationen und Prozeduren hat keine Bedeutung.
    Dein Plan funktioniert nicht, weil die ganzen Deklarationen außerhalb von Prozeduren zuerst abgearbeitet werden. Danach wird nur noch abgearbeitet, was in den Form-Prozeduren steht. Das heißt, dass zuerst Deine Private ReadOnly-Deklarationen/Definitionen verarbeitet werden, aber Dein A = "22" erst danach, und zwar wenn das Form das Form.Load-Event feuert und somit der die Prozedur Form1_Load aufgerufen wird. Danach kommt nur noch das ,was in weiteren Prozeduren steht. Aber da Dein Private ReadOnly nicht innerhalb einer Prozedur steht, wird es nach Form1_Load auch nicht mehr behandelt. Sondern eben davor.
    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.
    @RodFromGermany
    Okay, gut zu wissen. Aber selbst darüber funktioniert es nicht:

    VB.NET-Quellcode

    1. Sub New()
    2. InitializeComponent()
    3. TextBox1.Text = "192.168.2.1"
    4. End Sub
    5. Private REMOTE_IP As String = TextBox1.Text
    6. Private Const REMOTE_PORT As UInteger = 47808
    7. Private ReadOnly Bacnet As BacnetClient = New BacnetClient()
    8. Private ReadOnly RemoteAddress As BacnetAddress = New BacnetAddress(BacnetAddressTypes.IP, $"{REMOTE_IP}:{REMOTE_PORT}")

    Der Wert "TextBox1.Text" ist in dem Moment auch Nothing.

    @VaporiZed
    Alles klar, ich verstehe. Dann führe ich die Aktion (Zeile 9 +10) erst später aus, wenn die Form geladen ist.
    Danke.
    @gamer29016 Lesen bildet:

    RodFromGermany schrieb:

    ReadOnly-Variablen musst Du im Konstruktor Sub New() belegen.
    Die Betonung liegt auf im Konstruktor.
    Das sieht so aus:

    VB.NET-Quellcode

    1. Private Const REMOTE_PORT As UInteger = 47808
    2. Private REMOTE_IP As String
    3. Private ReadOnly Bacnet As BacnetClient
    4. Private ReadOnly RemoteAddress As BacnetAddress
    5. Sub New()
    6. InitializeComponent()
    7. TextBox1.Text = "192.168.2.1"
    8. REMOTE_IP = TextBox1.Text
    9. Bacnet = New BacnetClient()
    10. RemoteAddress = New BacnetAddress(BacnetAddressTypes.IP, $"{REMOTE_IP}:{REMOTE_PORT}")
    11. End Sub
    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!
    Alles was du außerhalb einer Methode machst, passiert als aller erstes. Egal in welcher Zeile es steht. Die Reihenfolge ob die Klassenvariable an erster Stelle steht under am Ende ist irrelevant für den Programmablauf.

    So ist die Standard Reihenfolge beim Öffnen einer Form:
    0. Behandlung von Variablen außerhalb von Methoden „Klassenvariablen“
    1. Konstruktor „Sub New()“ wird aufgerufen
    1.1 InitializeComponents() innerhalb des Konstruktors wird ausgeführt
    - ab hier kann man auf Controls zugreifen-
    2. Form.Load
    3. Form.Shown
    - ab hier ist die Form für den Benutzer sichtbar -

    Edit: Punkt 0 könnte auch zwischen 1 und 1.1 passieren, da bin ich mir nicht ganz sicher.
    "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