VisualBasic Der Befehl Focus in VB.NET will nicht

Hoi,

du kannst dir im Visual Studio ja während des Code schreibens einige Details zu verwendeten Funktionen etc. ansehen, was sie für Parameter brauchen, welchen Rückgabewert haben.

Dort steht bei InputBox, dass eine Zeichenfolge zurück gegeben wird -> String .
Der Nutzer kann dort Ä's und Ö's eingeben, es liegt an dir, die Eingabe zu überprüfen.

Ich würde das wie vorher auch einfach mit der IsNumeric() Funktion machen, danach kannst du den erhaltenen Wert mit CInt() in Integer umwandeln (Kommazahlen werden dabei gerundet)

Ein bischen ungewöhnlich ist nur, dass er Punkte (die meistens als Kommas verwendet werden ignoriert)
 
Danke Krafty, das habe ich schon gesehen das mir VB dort Infos gibt, nur manchmal kann ich mit diesen gar nichts anfangen ^^

Ich bin jetzt einen Schritt weitergekommen.
Jedoch bekomme ich beim folgenden Code noch diese Fehler:

  1. Falsche Fehlermeldungen wenn man nichts eingibt...
  2. Falsche Fehlermeldung bei Texteingabe
  3. und zum Schluss möchte ich noch folgendes:
    Ich starte das Formular, dort gibt es dann deaktivierte Felder für die Adresse. Deshalb geht man auf den Knopf Start und gibt dort sein Alter ein, wenn dieses über 18 ist kommt man auf das Formular zurück und die Felder sind wieder aktiviert.
    Am aktivieren haperts noch ein bisschen, ich habe per Google gesucht und bin nur auf VBA Lösungsvorschläge gestossen (leider).
    weisst du wie ich diese wieder aktivieren kann?
  4. Und wenn du noch ein Vorschlag für eine bessere Schreibweise des Codes hättest... nur zu :D
Merci

Code:
Public Class frmFormulareingabe

    Private Sub cmdStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdStart.Click

        Dim strInputausgabe As String

        strInputausgabe = InputBox("Bitte geben Sie Ihr Alter ein", "Altersabfrage")
        If IsNumeric(strInputausgabe) = False Then
        ElseIf IsNothing(strInputausgabe) = True Then
        ElseIf strInputausgabe = 0 Then
            MsgBox("Bitte geben Sie ein gültiges Alter ein!", , "Fehler")
            Call cmdStart_Click(strInputausgabe, e)
        Else : MsgBox("OK")
        End If

    End Sub

    Private Sub cmdBeenden_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdBeenden.Click
        If MsgBox("Möchten Sie das Programm beenden?", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "Programm beenden") = MsgBoxResult.Yes Then End
    End Sub

    Private Sub cmdInfo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdInfo.Click
        MsgBox("Info", MsgBoxStyle.Information + MsgBoxStyle.OkOnly, "Info")
    End Sub

End Class
 
Du solltest zuerst überprüfen ob etwas Nothing ist, denn wenn dies der Fall ist, darfst du damit nicht weiter arbeiten. Die meisten Funktionen mögen es nicht, wenn sie mit einem Objekt oder einer Variable aufgerufen werden, die auf nichts zeigt im Speicher, so wahrscheinlich auch die IsNothing() Funktion.

Um die Elemente wieder zu aktivieren, rufst du sie beim Namen und setzt mit einem Punkt die entsprechende Eigenschaft.

Habe es jetzt nicht mehr ganz im Kopf, aber TextBox1.enabled = true sollte es wohl tun.

Code:
if not strInputausgabe is nothing then
  if IsNumeric(strInputausgabe)
    if strInputausgabe >= 18 then
      enable zeugs
    else
      MsgBox("Zu jung!")
    end if
  else
    MsgBox("Das ist keine Zahl, man!")
  end if
else
MsgBox("Da wolltest wohl nix mitm Input zu tun haben?!")
end if

Du kannst es sicher auch mit ElseIf schachteln, aber du solltest dir dann genau überlegen wie du wo rausspringen möchtest und Ausgaben/Aktionen abwickelst.
 
Hey Danke für die Antwort
Ich habe das so probiert und mal deinen Code genommen und mit meinen Sachen ergänzt und vervollständigt.

Code:
    Private Sub cmdStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdStart.Click

        Dim strInputausgabe As String

        strInputausgabe = InputBox("Bitte geben Sie Ihr Alter ein", "Altersabfrage")

        If Not strInputausgabe Is Nothing Then
            If IsNumeric(strInputausgabe) Then
                If strInputausgabe >= 18 Then
                    txtNachname.Enabled = True
                    txtVorname.Enabled = True
                    txtAdresse.Enabled = True
                    txtPLZ.Enabled = True
                    txtOrt.Enabled = True
                Else
                    MsgBox("Sie sind nicht genug alt!")
                End If
            Else
                MsgBox("Bitte geben Sie eine Zahl ein!")
            End If
        Else
            MsgBox("Sie haben keine Eingabe getätigt!")
        End If

    End Sub

Das ist dabei rausgekommen ^^. Es funktionierte, vielleicht kannst du mir aber noch sagen wieso die Fehlermeldung "Bitte geben Sie eine Zahl ein!" kommt, wenn ich nichts eingebe. Mit diesem Fehler sollte ja die Meldung "Sie haben keine Eingabe getätigt kommen" oder?

Meine Variante vom Post 22, war die eher falsch oder einfach nur kompilierter als deine Variante?

Ich werde mich jetzt mal informieren, wie ich z.B. die Daten die man in den Adressfelder eingibt, in eine SQL Datenbank weiterleiten könnte...
Merci
 
Scheinbar gibt die InputBox im Falle eines Abbruchs oder Schließen des Fensters immer einen leeren String ("") zurück. Dadurch hat deine Variable einen Wert und die "is nothing" Abfrage ist unnötig.

Aber man kann ja auf Nummer sicher gehen :D
 
Zurück
Oben