俩段相似代码,为什么第二段出现就出错?
用到俩个文本框,一个滚动条。最开始设置了 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
[解决办法]
解决问题就好,管那么多干吗,管不过来的.