我的编码有问题吗?我还是新手

时间:2019-11-11 05:21:50

标签: vb.net

我尝试运行此程序,但始终出现错误:

  

从字符串“ LBLBuku”到类型“ Double”的转换无效。

If LBLBuku.Text >= 5 Or Val(LBLBuku.Text) + Val(TextBox1.Text) > 5 Then
    MsgBox("Peminjaman Melebihi")
Else
    If lbljudul.Text = "" Or TextBox1.Text = "" Then
        MsgBox("Silahkan isi Kode Buku")
    Else
        DataGridView1.Rows.Add(New String() {TextBox2.Text, lbljudul.Text, LBLPengarang.Text, LBLTahun.Text, TextBox2.Text})
        TextBox1.Text = ""
        TextBox2.Text = ""
        lbljudul.Text = ""
        TextBox2.Text = ""
        LBLPengarang.Text = ""
        LBLTahun.Text = ""
        Call rumustotalbuku()
    End If
End If

2 个答案:

答案 0 :(得分:2)

在代码行上注意

Local CA

“文本”属性的类型为“字符串”,您必须先将文本转换为整数类型,然后才能使用“> =”。

答案 1 :(得分:0)

首先,我声明一个变量以在文本框中保存整数值。如果Integer.TryParse可以将文本框中的字符串转换为整数,则将返回true。还将用数字填充变量intTB1

我假设LBLBuku是一个标签,因此.Text属性是通过代码设置的。我们可以依靠这个数字,所以我们要做的就是用CInt()进行转换。我们可以使用从.TryParse中的Or CInt(LBLBuku.Text) + intTB1 > 5获得的变量,而不必再次引用文本框。

我们不需要检查TextBox1是否为空,因为它.TryParse不会通过。

最后,至少在大多数情况下,您不需要Call关键字。

您确实意识到您已经两次向新的DataRow中添加了TextBox2

Private Sub OPCode()
    Dim intTB1 As Integer
    If Not Integer.TryParse(TextBox1.Text, intTB1) Then
        MessageBox.Show("Please enter a number in TextBox1.")
        Return
    End If

    If CInt(LBLBuku.Text) >= 5 Or CInt(LBLBuku.Text) + intTB1 > 5 Then
        MsgBox("Peminjaman Melebihi Maksimal")
    Else
        If lbljudul.Text = "" Then
            MsgBox("Silahkan isi Kode Buku")
        Else
            DataGridView1.Rows.Add(New String() {TextBox2.Text, lbljudul.Text, LBLPengarang.Text, LBLTahun.Text, TextBox2.Text})
            TextBox1.Text = ""
            TextBox2.Text = ""
            bljudul.Text = ""
            TextBox2.Text = ""
            LBLPengarang.Text = ""
            LBLTahun.Text = ""
            rumustotalbuku()
        End If
    End If
End Sub