使用检查状态更改来计算表并显示结果

时间:2015-11-04 11:41:37

标签: vb.net

当复选框的检查状态从未选中状态更改为已检查但是当我尝试它不起作用时,我将文本框的值乘以十进制数是什么...这是我到目前为止所做的但是它无法正常工作

Private Sub FuelOnlyCheckBox_CheckStateChanged(sender As Object, e As EventArgs) Handles FuelOnlyCheckBox.CheckStateChanged

    Try
        If FuelOnlyCheckBox.CheckState = True Then

            Dim TotalCashEmolumentsint As Integer
            Dim FOLmtint As Integer
            Dim VHFint As Integer
            Dim TotalVHFint As Integer

            TotalCashEmolumentsint = Val(TotalCashEmoluments.Text)
            TotalVHFint = Val(TotalVHF.Text)
            VHFint = Val(VHF.Text)
            FOLmtint = Val(VFDLmt.Text)

            ' Calculating FO

            VHFint = TotalCashEmolumentsint * 0.05

            'Checking and deducting with limits
            If VHFint = FOLmtint Then
                TotalVHF = FOLmt
            End If

            If VHFint > FOLmtint Then
                TotalVHF = FOLmt
            End If

            If VHFint < FOLmtint Then
                TotalVHFint = VHFint + 0
            End If
        End If
    Catch ex As Exception
        MessageBox.Show(ex.StackTrace, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
    End Try
End Sub

1 个答案:

答案 0 :(得分:0)

当您选中/取消选中此框时,您的值未更改的原因是您只编写了选中此框时的代码。要告诉您的程序取消选中该框的时间,您需要添加Else声明

例如:

If FuelOnlyCheckBox.Checked Then
    'Your code as written
Else
    'Alternate calculations
End If

根据我认为你想要做的事情,这可能会更有帮助:

Try
    Dim TotalCashEmolumentsint As Integer
    Dim FOLmtint As Integer
    Dim VHFint As Integer
    Dim TotalVHFint As Integer

    TotalCashEmolumentsint = Val(TotalCashEmoluments.Text)
    TotalVHFint = Val(TotalVHF.Text)
    FOLmtint = Val(VFDLmt.Text)

    If FuelOnlyCheckBox.Checked Then
        VHFint = TotalCashEmolumentsint * 0.05
    Else
        VHFint = Val(VHF.Text)
    End If

    If VHFint >= FOLmtint Then
        TotalVHF = FOLmt  'Undeclared variable. Should it be FOLmtint?
    Else
        TotalVHFint = VHFint
    End If
Catch ex As Exception
    MessageBox.Show(ex.StackTrace, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try

修改

再看看之外,还有一个更大的问题:你混淆了CheckStateChecked属性。 CheckState整数Checked Boolean 。所以

If FuelOnlyCheckBox.CheckState = CheckState.Checked Then

If FuelOnlyCheckBox.Checked Then

会为您提供所需的结果,但

If FuelOnlyCheckBox.CheckState = True Then

将与您想要的相反。这是因为True被视为整数的计算结果为0,这也是CheckState.Unchecked的值。