如何在If Else语句中处理第二个条件

时间:2014-04-06 23:32:02

标签: vb.net

如何在If Else语句中处理第二个条件,我的if语句正在工作,但第二个条件不起作用(ElseIF),我的条件声明是否有问题?

Try
            If Val(TextBox7.Text.Trim.Split(".")(1)) >= 60 Then

                TextBox7.Text = Val(TextBox7.Text.Trim.Split(".")(0)) + 1 & "." & Val(TextBox7.Text.Trim.Split(".")(1) - 60) & " " & Format(Now, "MM/dd/yyyy")
                TextBox3.Text = Val(TextBox3.Text.Trim.Split(".")(0)) & "." & Val(TextBox3.Text.Trim.Split(".")(1) - 60) & " " & Format(Now, "MM/dd/yyyy")

            ElseIf Val(TextBox7.Text.Trim.Split(".")(1)) >= 100 Then

                TextBox7.Text = Val(TextBox7.Text.Trim.Split(".")(0)) - 1 & "." & Val(TextBox7.Text.Trim.Split(".")(1) - 45) & " " & Format(Now, "MM/dd/yyyy")
                TextBox3.Text = Val(TextBox3.Text.Trim.Split(".")(0)) - 1 & "." & Val(TextBox3.Text.Trim.Split(".")(1) - 45) & " " & Format(Now, "MM/dd/yyyy")


            Else
                TextBox7.Text = Format(Val(TextBox6.Text) + Val(Strings.Left(time.Text.Trim, 5)), "##.00") & Strings.Right(time.Text.Trim, 11)
                TextBox3.Text = Format(Val(TextBox6.Text) + Val(Strings.Left(time.Text.Trim, 5)), "##.00") - 1 & Strings.Right(time.Text.Trim, 11)
                'TextBox3.Text = Format(Val(TextBox3.Text.Trim.Split(".")(0) - 1) & "." & Val(TextBox3.Text.Trim.Split(".")(1)) & " " & Format(Now, "MM/dd/yyyy"))
            End If
        Catch
            TextBox7.Text = Format(Val(TextBox6.Text) + Val(Strings.Left(time.Text.Trim, 5)), "##.00") & Strings.Right(time.Text.Trim, 11)
        End Try 

2 个答案:

答案 0 :(得分:5)

>= 100应该是第一个条件,因为它是限制性

>= 60应该是第二个条件,因为所有值>=100也是>=60

答案 1 :(得分:0)

@James说的话+我建议你改写为Select Case - 应该更容易理解:

Select Case Val(TextBox7.Text.Trim.Split(".")(1))
  Case Is >= 100
    TextBox7.Text = Val(TextBox7.Text.Trim.Split(".")(0)) - 1 & "." & Val(TextBox7.Text.Trim.Split(".")(1) - 45) & " " & Format(Now, "MM/dd/yyyy")
    TextBox3.Text = Val(TextBox3.Text.Trim.Split(".")(0)) - 1 & "." & Val(TextBox3.Text.Trim.Split(".")(1) - 45) & " " & Format(Now, "MM/dd/yyyy")
  Case Is >= 60
    TextBox7.Text = Val(TextBox7.Text.Trim.Split(".")(0)) + 1 & "." & Val(TextBox7.Text.Trim.Split(".")(1) - 60) & " " & Format(Now, "MM/dd/yyyy")
    TextBox3.Text = Val(TextBox3.Text.Trim.Split(".")(0)) & "." & Val(TextBox3.Text.Trim.Split(".")(1) - 60) & " " & Format(Now, "MM/dd/yyyy")
  Case Else
    TextBox7.Text = Format(Val(TextBox6.Text) + Val(Strings.Left(time.Text.Trim, 5)), "##.00") & Strings.Right(time.Text.Trim, 11)
    TextBox3.Text = Format(Val(TextBox6.Text) + Val(Strings.Left(time.Text.Trim, 5)), "##.00") - 1 & Strings.Right(time.Text.Trim, 11)
End Select

还有几个兴趣点:

  • 请勿使用Val,而是使用Convert类,例如Convert.ToInt32
  • 您可以将TextBox3.Text.Trim.Split(".")包装到一个函数中,然后重复使用。
  • 您阅读日期两次,最好在选择之前阅读一次日期,然后执行dateVar.ToString("MM/dd/yyyy")
  • 支持.NET语法而不是VB6。 ValFormatStrings.Left都是VB6。 .NET等价物是Convert.*ToString带格式字符串,Substring
  • 控制命名 - TextBox3和TextBox7没有任何意义。试着为他们想出一个更好的名字。