none
又是个if语句的问题 RRS feed

  • 问题

  • 因为又出现了一些情况,特来发帖

    x,y 值由文本框输入,当我从文本框中输入x=150,y=120是怎么还是执行 Label1.Text = "I love you"这条语句呢?

    If 140 < x and x< 180  and y<100 Then

                Label1.Text = "I love you"
            Else
               Label2.Text = "I do'not love you"
            End If


    visual studio 2008
    2009年3月9日 3:28

答案

  •  


    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
            Dim t As Single
            Try
                t = DirectCast(sender, System.Windows.Forms.TextBox).Text
                x = t
            Catch
            End Try
            myfunc()
        End Sub

        Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
            Dim t As Single
            Try
                t = DirectCast(sender, System.Windows.Forms.TextBox).Text
                y = t
            Catch
            End Try
                    myfunc()
        End Sub
        Private Sub        myfunc()
            If 140 < x And x < 180 And y < 100 Then

                Label1.Text = "I love you"
            Else
                Label2.Text = "I don't love you"
            End If
        End Sub
    End Class


    http://feiyun0112.cnblogs.com/
    • 已标记为答案 liunain021 2009年3月10日 6:59
    2009年3月10日 1:26
    版主

全部回复

  • '变量类型
    dim x as integer,y as integer

    '看看值
    msgbox x 
    msgbox y


    http://feiyun0112.cnblogs.com/
    2009年3月9日 3:46
    版主
  •  x,y 值由文本框输入,当我从文本框中输入x=150,y=120是怎么还是执行 Label1.Text = "I love you"这条语句呢?

    If 140 < x and x< 180  and y<100 Then

                Label1.Text = "I love you"
            Else
               Label2.Text = "I do'not love you"
            End If



    x=150,y=120的情况下

    If 140 < x and x< 180  and y<100 Then


    If true and true  and false Then

    结果肯定是false


    你想要的判断  其实是 If ( 140 < x and x< 180 ) or y<100 Then 么? 


    就算首页不能显示30天内排行榜 回答总数也快接近top10了 5555
    努力奋斗 重回首页排行榜!!! 55555
    有原则的回答问题: 不懂的不去装懂,别人回答得很完整的,没有需要补充的不去蹭分。
    2009年3月9日 3:57

  • 我的意思要同时满足140 < x and x< 180  and y<100时,才执行Label1.Text = "I love you"这个语句是吧,否则就执行Label2.Text = "I do'not love you"
    既然false的话,那么就执行Label2.Text = "I do'not love you",但我输入的值,为什么没有执行这条语句?

    If 140 < x and x< 180  or y<100,这样的话,肯定执行Label1.Text = "I love you"啊。这个我是知道的

    visual studio 2008
    2009年3月9日 6:08
  • feiyun0112 说:

    '变量类型
    dim x as integer,y as integer

    '看看值
    msgbox x 
    msgbox y


    http://feiyun0112.cnblogs.com/



    弹出很多框框,框上的值与我默认的值是一样的
    visual studio 2008
    2009年3月9日 6:16
  • liunain021 说:

    feiyun0112 说:

    '变量类型
    dim x as integer,y as integer

    '看看值
    msgbox x 
    msgbox y


    http://feiyun0112.cnblogs.com/



    弹出很多框框,框上的值与我默认的值是一样的
    visual studio 2008



    你跟踪看看,执行 Label1.Text = "I love you"这条语句时x,y的值
    http://feiyun0112.cnblogs.com/
    2009年3月9日 6:21
    版主
  • feiyun0112 说:

    liunain021 说:

    feiyun0112 说:

    '变量类型
    dim x as integer,y as integer

    '看看值
    msgbox x 
    msgbox y


    http://feiyun0112.cnblogs.com/



    弹出很多框框,框上的值与我默认的值是一样的
    visual studio 2008



    你跟踪看看,执行 Label1.Text = "I love you"这条语句时x,y的值
    http://feiyun0112.cnblogs.com/



    不好意思,我都不知道怎么跟踪。粗略讲讲怎么跟踪,让我试试

    我也不知道怎么弹出那么多文本框


    visual studio 2008
    2009年3月9日 7:09
  •  

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
            Dim t As Single
            Try
                t = DirectCast(sender, System.Windows.Forms.TextBox).Text
                x = t
            Catch
            End Try
            Me.Invalidate()

        End Sub

        Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
            Dim t As Single
            Try
                t = DirectCast(sender, System.Windows.Forms.TextBox).Text
                y = t
            Catch
            End Try
            Me.Invalidate()
        End Sub
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            If 140 < x And x < 180 And y < 100 Then

                Label1.Text = "I love you"
            Else
                Label2.Text = "I don't love you"
            End If
        End Sub
    End Class


    visual studio 2008
    2009年3月9日 7:29
  •  label 和textbox 都是缺省的状态
    我把代码贴出来了,版主分析下,我跟踪过,x和y一直是零,都执行Label2.Text = "I don't love you",你看我分析的正确不?


    visual studio 2008
    2009年3月9日 7:33
  •  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim t As Single
            Try
                t = TextBox1.Text
                x = t
            Catch
            End Try
     Try
                t = TextBox2.Text
                y = t
            Catch
            End Try


            If 140 < x And x < 180 And y < 100 Then

                Label1.Text = "I love you"
            Else
                Label2.Text = "I don't love you"
            End If
        End Sub


    http://feiyun0112.cnblogs.com/
    2009年3月9日 7:34
    版主
  • 代码已试,没有反应啊
    visual studio 2008
    2009年3月9日 8:12
  • 这个看似简单的问题
    visual studio 2008
    2009年3月9日 8:13
  • 你好!
         你是在Load事件的处理函数中判断的,这个函数是在窗体第一次显示前运行,这是还没有通过文本框对x,y赋值,所以x,y都是默认值! 

    周雪峰
    2009年3月9日 8:15
    版主
  • 那我以后输入这些值,总可以改吧?如果这样不行,那因该怎么改呢?
    visual studio 2008
    2009年3月9日 8:40
  • 我的意图应该怎么实现呢???
    visual studio 2008
    2009年3月9日 11:07
  •  


    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
            Dim t As Single
            Try
                t = DirectCast(sender, System.Windows.Forms.TextBox).Text
                x = t
            Catch
            End Try
            myfunc()
        End Sub

        Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
            Dim t As Single
            Try
                t = DirectCast(sender, System.Windows.Forms.TextBox).Text
                y = t
            Catch
            End Try
                    myfunc()
        End Sub
        Private Sub        myfunc()
            If 140 < x And x < 180 And y < 100 Then

                Label1.Text = "I love you"
            Else
                Label2.Text = "I don't love you"
            End If
        End Sub
    End Class


    http://feiyun0112.cnblogs.com/
    • 已标记为答案 liunain021 2009年3月10日 6:59
    2009年3月10日 1:26
    版主