如果声明内部案例声明(VB.Net)

时间:2016-02-26 12:22:40

标签: vb.net

您好我是Visual Studio的新编码。 我正在使用Visual Studio 2012 我有个问题。 我想将combobox和textbox31连接到textbox1 恩。如果组合框为100且textbox31为1,则textbox1将为100

我最终使用此代码:

Dim c As String

    c = ComboBox1.Text


    Select Case "c"

        Case 100
            If TextBox31.Text >= 2.25 Then
                TextBox1.Text = 100
            ElseIf TextBox31.Text >= 2.5 Then
                TextBox1.Text = 75
            ElseIf TextBox31.Text >= 2.75 Then
                TextBox1.Text = 50
            ElseIf TextBox31.Text >= 3 Then
                TextBox1.Text = 25
            ElseIf TextBox31.Text >= 3.25 Then
                TextBox1.Text = 0

            End If

        Case 75
            If TextBox31.Text >= 2.25 Then
                TextBox31.Text = 75
            ElseIf TextBox1.Text >= 2.5 Then
                TextBox1.Text = 75
            ElseIf TextBox31.Text >= 2.75 Then
                TextBox1.Text = 50
            ElseIf TextBox31.Text >= 3 Then
                TextBox1.Text = 25
            ElseIf TextBox31.Text >= 3.25 Then
                TextBox1.Text = 0

            End If

        Case 50
            If TextBox31.Text >= 2.25 Then
                TextBox1.Text = 50
            ElseIf TextBox31.Text >= 2.5 Then
                TextBox1.Text = 50
            ElseIf TextBox31.Text >= 2.75 Then
                TextBox1.Text = 50
            ElseIf TextBox31.Text >= 3 Then
                TextBox1.Text = 25
            ElseIf TextBox31.Text >= 3.25 Then
                TextBox1.Text = 0

            End If


        Case 25
            If TextBox31.Text >= 2.25 Then
                TextBox1.Text = 25
            ElseIf TextBox31.Text >= 2.5 Then
                TextBox1.Text = 25
            ElseIf TextBox31.Text >= 2.75 Then
                TextBox1.Text = 25
            ElseIf TextBox31.Text >= 3 Then
                TextBox1.Text = 25
            ElseIf TextBox31.Text >= 3.25 Then
                TextBox1.Text = 0

            End If

    End Select

但是当我在组合框和文本框31中输入时,textbox1没有响应或者我想要得到什么。

5 个答案:

答案 0 :(得分:1)

你在那里使用的逻辑嵌套比我通常习惯的要多一点。在这种情况下,你可以考虑更像这样的东西:

    Dim c As Integer
    Dim aintValues() As Integer = {0, 25, 50, 75, 100}

    If IsNumeric(ComboBox1.Text) And IsNumeric(TextBox31.Text) Then
        c = ComboBox1.Text
    Else
        Exit Sub
    End If

    If c <= 25 Then
        aintValues = {0, 25, 25, 25, 25}
    ElseIf c <= 50 Then
        aintValues = {0, 25, 50, 50, 50}
    ElseIf c <= 75 Then
        aintValues = {0, 25, 50, 75, 75}
    End If

    If TextBox31.Text >= 3.25 Then
        TextBox1.Text = aintValues(0)
    ElseIf TextBox31.Text >= 3.0 Then
        TextBox1.Text = aintValues(1)
    ElseIf TextBox31.Text >= 2.75 Then
        TextBox1.Text = aintValues(2)
    ElseIf TextBox31.Text >= 2.5 Then
        TextBox1.Text = aintValues(3)
    ElseIf TextBox31.Text >= 2.25 Then
        TextBox1.Text = aintValues(4)
    ElseIf TextBox31.Text >= 0 Then
        TextBox1.Text = 42
    Else
        ' negative
    End If

或者您仍然可以按如下方式使用选择案例:

    Dim c As Integer
    Dim aintValues() As Integer = {0, 25, 50, 75, 100}

    If IsNumeric(ComboBox1.Text) And IsNumeric(TextBox31.Text) Then
        c = ComboBox1.Text
    Else
        Exit Sub
    End If

    If c <= 25 Then
        aintValues = {0, 25, 25, 25, 25}
    ElseIf c <= 50 Then
        aintValues = {0, 25, 50, 50, 50}
    ElseIf c <= 75 Then
        aintValues = {0, 25, 50, 75, 75}
    End If

    Select Case TextBox31.Text
        Case Is >= 3.25
            TextBox1.Text = aintValues(0)
        Case Is >= 3.0
            TextBox1.Text = aintValues(1)
        Case Is >= 2.75
            TextBox1.Text = aintValues(2)
        Case Is >= 2.5
            TextBox1.Text = aintValues(3)
        Case Is >= 2.25
            TextBox1.Text = aintValues(4)
        Case Is >= 0
            TextBox1.Text = 42
        Case Else
            ' negative
    End Select

答案 1 :(得分:0)

您的代码存在一些问题,但有一个地方可以理解您的条件

Case 100
    If TextBox31.Text >= 2.25 Then
        TextBox1.Text = 100
    ElseIf TextBox31.Text >= 2.5 Then
        TextBox1.Text = 75
    ElseIf TextBox31.Text >= 2.75 Then
        TextBox1.Text = 50
    ElseIf TextBox31.Text >= 3 Then
        TextBox1.Text = 25
    ElseIf TextBox31.Text >= 3.25 Then
        TextBox1.Text = 0
    End If

在功能上等同于

Case 100
    If TextBox31.Text >= 2.25 Then
        TextBox1.Text = 100
    End If

其他条件永远不会被测试,因为如果TextBox31.Text是任何大于或等于2.25的值,那么它就会通过,我们就会完成。

解决这个问题,你可能会颠倒你的条件顺序,即

Case 100
    If TextBox31.Text >= 3.25 Then
        TextBox1.Text = 0
    ElseIf TextBox31.Text >= 3 Then
        TextBox1.Text = 25
    ElseIf TextBox31.Text >= 2.75 Then
        TextBox1.Text = 50
    ElseIf TextBox31.Text >= 2.5 Then
        TextBox1.Text = 75
    ElseIf TextBox31.Text >= 2.25 Then
        TextBox1.Text = 100
    End If

此外,您似乎想要了解使用TextBox31.Text < 2.25

进行Else Case 100 If TextBox31.Text >= 3.25 Then TextBox1.Text = 0 ElseIf TextBox31.Text >= 3 Then TextBox1.Text = 25 ElseIf TextBox31.Text >= 2.75 Then TextBox1.Text = 50 ElseIf TextBox31.Text >= 2.5 Then TextBox1.Text = 75 ElseIf TextBox31.Text >= 2.25 Then TextBox1.Text = 100 Else TextBox1.Text = 100000 End If 的情况
{{1}}

答案 2 :(得分:0)

我不知道你的剧本是什么,但有一件事可能是你的失败:

第一个if..then语句设置TextBox31的文本而不是TextBox1。 我宁愿写:

If TextBox31.Text >= 2.25 Then
     TextBox1.Text = 100

答案 3 :(得分:0)

我现在解决问题 我使用此代码:

Case 100
            If TextBox31.Text >= 3 Then
                TextBox1.Text = 0
            ElseIf TextBox31.Text >= 2.75 Then
                TextBox1.Text = 25
            ElseIf TextBox31.Text >= 2.5 Then
                TextBox1.Text = 50
            ElseIf TextBox31.Text >= 2.25 Then
                TextBox1.Text = 75
            ElseIf TextBox31.Text >= 1 Then
                TextBox1.Text = 100
            Else
                TextBox1.Text = 0

感谢Mr.sfletche For Not Giving帮助我。 与非常帮助我的人相同 Mr.sfletche如果我有其他问题,你会帮助我做fute

非常感谢你们

答案 4 :(得分:0)

这是数学序列的问题。你不能在这里使用if语句。如果是这样的话,不幸的是,你在修改工作时会疯狂。

    'Example Data
    Dim c = "50"
    Dim Text = "3.12"

    Dim value As Double
    Double.TryParse(Text, value)

    Dim num = Math.Ceiling((3.25 - value) / 0.25)

    Console.WriteLine(Math.Min(Integer.parseInt(c), 25 * num))

我认为您要做的就是上述内容。