首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

俩段相像代码,为什么第二段出现就出错

2012-12-31 
俩段相似代码,为什么第二段出现就出错?用到俩个文本框,一个滚动条。最开始设置了 TextBox1.Text1 TextBox2

俩段相似代码,为什么第二段出现就出错?
用到俩个文本框,一个滚动条。最开始设置了 TextBox1.Text=1 TextBox2.Text=100 VScrollBar1.Maximum =99
                                            
以下语段 的目的是 为了保持  TextBox1.Text<TextBox2.Text  滚动条的最大值为俩者差,但是没有红字部分时能正常 ,一旦添加红色部分时 就会加载窗体出错,卡死,检查几次,对比俩个文本框的语段设置,极其相似,如果有问题理应俩个都有,但是实际上只要红色部分不出现,就实在找不出问题,求指点或者修改让达到目的即可。
       Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        Dim a As Integer = Int(TextBox1.Text)
        Dim b As Integer = Int(TextBox2.Text)

        If a < b Then
            VScrollBar1.Maximum = b - a
            Label1.Text = Str(Int(a + VScrollBar1.Value))

        Else
            TextBox1.Text = Str(TextBox2.Text - 1)
            VScrollBar1.Maximum = b - a
            Label1.Text = Str(Int(a + VScrollBar1.Value))
        End If

    End Sub
Private Sub VScrollBar1_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles VScrollBar1.Scroll
        Dim a As Integer = Int(TextBox1.Text)
        Dim b As Integer = Int(TextBox2.Text)
        Label1.Text = Str(Int(a + VScrollBar1.Value))

    End Sub
Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
        Dim a As Integer = Int(TextBox1.Text)
        Dim b As Integer = Int(TextBox2.Text)

        If a < b Then
            VScrollBar1.Maximum = b - a
            Label1.Text = Str(Int(a + VScrollBar1.Value))

        Else
            TextBox2.Text = Str(TextBox1.Text + 1)
            VScrollBar1.Maximum = b - a
            Label1.Text = Str(Int(a + VScrollBar1.Value))
        End If
    End Sub



------解决方案--------------------


你用错事件了,不能使用TextBox2_TextChanged事件,因为你的TextBox2_TextChanged事件里面还有对text2赋值,所以反复触发了TextBox2_TextChanged事件,它一直执行这个过程,当然卡死!!

[解决办法]
TextBox1_TextChanged,TextBox2_TextChanged,这有两个TextChanged,所以一直在走死循环.你仔细检查一下,看看到底是死在哪个循环上,用F8调试模式,把其中的一个,或者两个,都换一下,
[解决办法]
错误为: 从字符串“”到类型“Double”的转换无效。[Quote=引用:]

这错写的很清楚了,加个空值的判断吧.
if text1.text="" then

else
  
end if
[解决办法]
空值的时候,不能转换,在程序启动的时候,让它为0,或者在设计窗口,强行给它个初始值
[解决办法]
val 函数,将字符串转换为数字,无法转换的结果为0

而Int,是将字符串函数转成数字,字符串不能为0
[解决办法]
解决问题就好,管那么多干吗,管不过来的.

热点排行