当复选框的检查状态从未选中状态更改为已检查但是当我尝试它不起作用时,我将文本框的值乘以十进制数是什么...这是我到目前为止所做的但是它无法正常工作
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
答案 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
修改强>
再看看之外,还有一个更大的问题:你混淆了CheckState
和Checked
属性。 CheckState
是整数,Checked
是 Boolean 。所以
If FuelOnlyCheckBox.CheckState = CheckState.Checked Then
或
If FuelOnlyCheckBox.Checked Then
会为您提供所需的结果,但
If FuelOnlyCheckBox.CheckState = True Then
将与您想要的相反。这是因为True
被视为整数的计算结果为0,这也是CheckState.Unchecked
的值。