Saya memiliki formulir di mana pengguna perlu memasukkan bilangan bulat untuk menyimpan ke xml ketika mereka menekan tombol
masalahnya terletak bahwa ketika pengguna tidak memasukkan input yang valid, ini menampilkan kesalahan tetapi masih mencoba untuk mendeklarasikan variabel untuk fungsi saya dan kemudian macet - bagaimana cara menghentikannya?

Ini kode saya:

        If IsNumeric(txtLevel.Text) And IsNumeric(txtHealth.Text) Then
            MsgBox("choose a location to save in")
        ElseIf String.IsNullOrWhiteSpace(txtHealth.Text) Or String.IsNullOrWhiteSpace(txtLevel.Text) Then
            MsgBox("you have not filled in all fields")
            Me.Close()
        Else MsgBox("please input number form")
        End If

        Dim strName As String = txtCharacter.Text
        Dim intLevel As Integer = txtLevel.Text
        Dim intHealth As Integer = txtHealth.Text
        Dim strStat As String = cmbStat.Text
0
piqto 8 Januari 2021, 10:33

3 jawaban

Jawaban Terbaik

Anda menggunakan beberapa fitur lama dan Anda juga mematikan Option Strict.

Dengan itu, kode Anda bisa terlihat seperti ini:

Dim strName As String = txtCharacter.Text
Dim strStat As String = cmbStat.Text
Dim intLevel, intHealth As Integer

' if either condition is true, close the form prematurely
If (String.IsNullOrWhitespace(txtLevel.Text) OrElse String.IsNullOrWhitespace(txtHealth.Text)) Then
    MessageBox.Show("You have not filled in all fields.", "Invalid Form")
    Me.Close()
ElseIf (Not Integer.TryParse(txtLevel.Text, intLevel) OrElse Not Integer.TryParse(txtHealth.Text, intHealth)) Then
    MessageBox.Show("Please input number form.", "Invalid Form")
    Me.Close()
End If

' continue on with the code
4
David 11 Januari 2021, 14:13

Pindahkan deklarasi variabel Anda di dalam "If IsNumeric(txtLevel.Text) And IsNumeric(txtHealth.Text) Then" sehingga hanya akan mencoba untuk menetapkan nilai jika txtLevel dan txtHealth keduanya bilangan bulat.

Saya akan menyarankan Anda untuk mengubah kode seperti ini:

    'Checks if the textboxes are not empty
    If Not String.IsNullOrWhiteSpace(txtHealth.Text) Or String.IsNullOrWhiteSpace(txtLevel.Text) Then
        'They are not empty, so the program checks if they are integers
        If IsNumeric(txtLevel.Text) And IsNumeric(txtHealth.Text) Then
            'The input is integer
            Dim strName As String = txtCharacter.Text
            Dim intLevel As Integer = txtLevel.Text
            Dim intHealth As Integer = txtHealth.Text
            Dim strStat As String = cmbStat.Text

            MsgBox("choose a location to save in")
        Else
            'The input is not integer
            MsgBox("Value is not an integer")
        End If
    Else
        'A textbox is empty
        MsgBox("you have not filled in all fields")
        Me.Close()
    End If
1
Daniele S. 8 Januari 2021, 09:03

Anda dapat mencoba dengan TryParse untuk memastikan nilai integer tanpa kesalahan:

Dim intLevel As Integer 
Dim intHealth As Integer 

If (Integer.TryParse(txtLevel.Text, intLevel)) And (Integer.TryParse(txtHealth.Text, intHealth)) Then
                MsgBox("choose a location to save in")
ElseIf String.IsNullOrWhiteSpace(txtHealth.Text) Or String.IsNullOrWhiteSpace(txtLevel.Text) Then
                MsgBox("you have not filled in all fields")
                Me.Close()
Else MsgBox("please input number form")
End If

Dim strName As String = txtCharacter.Text
Dim strStat As String = cmbStat.Text

Temukan selengkapnya di : Int32. Metode TryParse

0
B.S. 8 Januari 2021, 08:55