Minimale Public-Frage…

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Grindelwald.

    Minimale Public-Frage…

    Hallo mal wieder.
    Ich programmiere gerade zu Übungszwecken einen Taschenrechner.
    Und ich möchte (dem Calculator ähnlich ;)) mehrere Buttons für die verschiedenen Rechenweisen haben, da es mir mit Radio-Buttons nicht gefällt.
    Ich müsste dazu aber bei jedem Button-Click

    VB.NET-Quellcode

    1. Dim Rechenzahl As Double = Convert.ToDouble(TextBox1.Text)

    benutzen. Deswegen wollte ich das gleiche einfach direkt als Public verwenden - aber dann zeigt er mir „Fehler beim Erstellen des Formulars. Weitere Informationen finden Sie in Exception.InnerException. Fehler: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt..“.
    Was kann ich dagegen tun? Ich will es ja nicht bei jedem Button neu dimmen müssen.

    roddy schrieb:

    Mach doch eine Function in der Code-Ebene der Click-Events:

    VB.NET-Quellcode

    1. Function Rechenzahl () As Double
    2. Rechenzahl = Convert.ToDouble(TextBox1.Text)
    3. End Function
    4. '...
    5. Private Sub Button1_Click()
    6. '...
    7. End Sub
    8. '...
    Dann könnte ich doch aber genau so gut

    VB.NET-Quellcode

    1. Dim Rechenzahl As Double = Convert.ToDouble(TextBox1.Text)

    bei jedem Click schreiben.

    Ich würde nur gerne mal wissen, warum das mit Public nicht geht.
    Das geht deshalb nicht, weil du auf ein Steuerelement verweist!
    Die Steuerelemente werden aber erst im Konstruktor durch den Aufruf von InitializeComponent erstellt.
    Die Variablen auf Modulebene werden jedoch vorher initialisiert. Dh: Textbox1 gibts noch nicht wenn diese Zeile

    VB.NET-Quellcode

    1. Dim Rechenzahl As Double = Convert.ToDouble(TextBox1.Text)
    ausgeführt werden soll.

    Definiere die Variable ohne Initialisierung und mach die Initialisierung im Konstruktor nach InitializeComponent.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim Rechenzahl As Double
    3. Public Sub New()
    4. InitializeComponent
    5. Rechenzahl = Convert.ToDouble(TextBox1.Text)
    6. End Sub