首页 > 解决方案 > 更新一个布尔值。VB.NET

问题描述

我正在开发一个应用程序,用户填写几个文本框,其他按钮根据他们填写的内容改变颜色。到目前为止它工作得相当不错,但我现在遇到了一个问题。

有 10 个按钮,当用户填写正确的值时,按下的按钮变为红色或绿色。例如,当我按下按钮 6 并填写所有内容时,它会变为绿色。然后,当我转到下一个按钮,即按钮 8 时,我填写了所有内容,使按钮变为红色,然后变为绿色。这是因为我在按钮 6 处为 3 个布尔变量赋予了 true 值,这会将其变为绿色。然后,当我想更改其他按钮的这些布尔值的值时,它们会保留第一次给它们的值。

这是我的代码的一部分,它只是相同的代码,但用于不同的按钮。

If Integer.TryParse(tbAantalIslands.Text, iAantalIslands) AndAlso
            iBtnClickCheck = 6 Then
            If iAantalIslands <= 2 Then
                bQuantityCheck = True
            End If
        End If

        If Integer.TryParse(tbAantalIslands.Text, iAantalIslands) AndAlso
            iBtnClickCheck = 8 Then
            If iAantalIslands <= 2 Then
                bQuantityCheck = True
            End If
        End If

这是按钮 6 和 8 的代码。当 iAantalIslands 小于或等于 2 时,它将布尔 bQuantityCheck 更改为 true。

这是我使用该布尔值所做的,以更改按下按钮的颜色。

If bQuantityCheck = True AndAlso bMassCheck = True AndAlso bWeightAllParticles = True AndAlso iBtnClickCheck = 6 Then
        btn6.BackColor = Color.Green
        Exit Function


    ElseIf bQuantityCheck = False AndAlso bMassCheck = False AndAlso bWeightAllParticles = False AndAlso iBtnClickCheck = 6 Then
        btn6.BackColor = Color.Red
        Exit Function

    ElseIf iBtnClickCheck = 6 Then
        btn3.BackColor = Color.Red
        Exit Function

    End If

    If bQuantityCheck = True AndAlso bMassCheck = True AndAlso bWeightAllParticles = True AndAlso iBtnClickCheck = 8 Then
        btn8.BackColor = Color.Green
        Exit Function


    ElseIf bQuantityCheck = False AndAlso bMassCheck = False AndAlso bWeightAllParticles = False AndAlso iBtnClickCheck = 8 Then
        btn8.BackColor = Color.Red
        Exit Function

    ElseIf iBtnClickCheck = 8 Then
        btn3.BackColor = Color.Red
        Exit Function

    End If

这里显示的ss,如果满足设置的参数,它将改变按钮的颜色。

我有 10 个按钮,这些按钮代表玻璃的厚度,例如 6 毫米、8 毫米、10 毫米等。该应用程序是一个测试器,用于查看玻璃是否以正确的方式破裂。用户必须填写3个字段,岛屿的数量(一定大小的松散玻璃碎片),最大的岛屿和所有岛屿的总和。这些字段有一个它们应该在的范围,例如不能超过 2 个岛或玻璃不正确,最大的岛的质量不能大于 1000mm2。

如果用户给出的值在正确的范围内,用户按下的用于说明玻璃厚度的按钮将变为绿色。如果它超出了这些设定的边界,它将变成红色。

现在如果用户已经测试了 6mm 厚的玻璃并且一切正常,那么按钮是绿色的,然后用户继续使用 8mm 厚的玻璃进行测试。例如 8mm 玻璃有 5 个岛,所以按钮应该变成红色。相反,在 6mm 按钮处给出的值不会改变,因此您在我的代码中看到的布尔值不会更新以适应按钮 8。按钮 8 在应该为红色时变为绿色。

标签: vb.netboolean

解决方案


不完全确定您要在这里做什么。

在对按钮 8 进行检查之前,您要么需要将布尔值重置为 false,要么完全使用一组不同的布尔值。

还要记住 AndAlso 是短路的,所以如果 bQuantityCheck 为真或假,您的代码将不会评估其他布尔值(bMassCheck 和 bWeightAllParticles)。


推荐阅读