2016-02-26 153 views
0

您好我是在Visual Studio的编码新。 我正在使用Visual Studio 2012 我有一个问题。 我想将组合框和文本框31连接到文本框1 前。如果ComboBox是100和textbox31是1,因此TextBox1的将是100如果陈述在案例陈述(VB.Net)

我结束了这段代码:

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的didnt响应或我想要什么iput要得到。

+1

'选择案例 “C”'不正确。它应该是'Select Case c' – snoopen

+0

我只是删除了“”我都一样。 – Hawiie13

+0

如果您使用的是Visual Studio,这是VB.net而不是VBA。检查你的变量类型。我认为用VB.net你可以依赖它为你铸造,但是很好意识到你将c作为字符串与Case 100作为Integer进行比较。 – snoopen

回答

0

你使用有嵌套有点超过我通常是舒适的逻辑。在这种情况下,你可以考虑更多的东西是这样的:

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 

或者如下你仍然可以使用select情况:

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 
+0

我试过这也是它也 但我调整的Textbox31.Text的值从2.25到1,2.5到2.25等等 但我没有了解很多代码。 它是如何完成的。 谢谢我试着理解,所以我有新的知识。 :) – Hawiie13

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 
+0

Mr.sfletche '情况下,我会更新100 如果TextBox31.Text> = 3.25然后 TextBox31.Text = 0 elseif的TextBox31.Text> = 3然后 TextBox1.Text = 25 elseif的TextBox31.Text> = 2.75然后 TextBox1.Text = 50 elseif的TextBox31.Text> = 2.5然后 TextBox1.Text = 75 elseif的TextBox31.Text> = 2.25然后 TextBox1.Text = 100 结束If' 什么也没有发生 – Hawiie13

+0

@HarryReyes:这可能是因为'TextBox31.Text'做不包含值> = 2.25(在这种情况下,它什么都不做) – sfletche

+0

我只是现在编辑,但没有。 我只想做 了'ComboBox1.Text'是以前的奖学金比例 那么'Textbox31.Text'是档次。 'Textbox1.Text'是他/她得到的新奖学金比例 继承人我想要做什么 当以前的奖学金百分比是100并且等级不会降低到2.25新的奖学金百分比维持但是如果等级低于2.25的新的奖学金比例将下降到75个 – Hawiie13

0

我不知道你的脚本是什么,但有一点可能是你的失败:

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

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

我的代码为约 的'ComboBox1.Text'是以前学术百分比 那么'Textbox31.Text'是年级。 'Textbox1.Text'是他/她得到的新奖学金比例 继承人我想要做什么 当以前的奖学金百分比是100并且等级不会降低到2.25新的奖学金百分比维持但是如果等级低于2.25新的奖学金比例将下降到75等 – Hawiie13

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不放弃帮助我。 同样的,其他谁帮我thanyo非常 Mr.sfletche如果我有这方面的其他问题,你会帮助我在福特

非常感谢你们

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)) 

我假设你想要做的就是上述。