求教,很简单的一个问题,我是初学的。Public Class Form1Private Sub RichTextBox1_TextChanged(sender As O
求教,很简单的一个问题,我是初学的。 Public Class Form1
Private Sub RichTextBox1_TextChanged(sender As Object, e As EventArgs) Handles RichTextBox1.TextChanged MsgBox("1") RichTextBox2.Text = Rnd() * 1000
End Sub
Private Sub RichTextBox2_TextChanged(sender As Object, e As EventArgs) Handles RichTextBox2.TextChanged MsgBox("2") RichTextBox1.Text = Rnd() * 1000
End Sub End Class 为什么不能一直循环下去,如果我想它们一直循环执行下去,怎么办? [解决办法] Public Class Form1 Private rnd As New Random() Private Sub RichTextBox1_TextChanged(sender As Object, e As EventArgs) Handles RichTextBox1.TextChanged MsgBox("1") RichTextBox2.Text = rnd.Next(0, 1000)
End Sub
Private Sub RichTextBox2_TextChanged(sender As Object, e As EventArgs) Handles RichTextBox2.TextChanged MsgBox("2") RichTextBox1.Text = rnd.Next(0, 1000)
End Sub End Class [解决办法] 你的代码的问题是,连续调用rnd返回的随机数一样,所以不再触发新的Changed [解决办法] 每次取随机数前,都初始化一下种子 [解决办法] 每次 new 一下 不行么 [解决办法]
如果主线程被你“卡死”,它根本没有时间去显示。 [解决办法]
也对 假设其 循环了 那在界面上也是看不到的 [解决办法] 要不 doeven 一下 看看 是不是呢 [解决办法] http://bbs.csdn.net/topics/390626276是不是你问的问题呢. 我测试了一下RichTextBox貌似是从内部避免了循环的Change事件的引发,因为你换成Textbox就可以得到你想要的结果。因此,如果你想要有一致的Change事件的引发机制,不如重写RichTextBox。 Public Class UserRichTextBox Inherits RichTextBox Public Event UserTextChange() Dim re As Boolean = True Private Sub myBase_TextChange(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.TextChanged If re Then RaiseEvent UserTextChange() End If
End Sub Public Overrides Property Text() As String Get Return MyBase.Text End Get Set(ByVal value As String) If MyBase.Text <> value Then re = False MyBase.Text = value re = True RaiseEvent UserTextChange() End If End Set End Property End Class
=====================================
你把上述代码粘贴到一个新建的类中,编译一下,你会在工具箱中看到UserRichTextBox 使用上面的UserRichTextBox代替系统的RichTextBox 使用UserTextChange事件代替系统的TextChange事件即可。 下面代码能陷入无限循环 Private Sub UserRichTextBox1_UserTextChange() Handles UserRichTextBox1.UserTextChange
MsgBox("1") UserRichTextBox2.Text = UserRichTextBox2.Text + "!" End Sub
Private Sub UserRichTextBox2_UserTextChange() Handles UserRichTextBox2.UserTextChange MsgBox("2") UserRichTextBox1.Text = UserRichTextBox1.Text + "!" End Sub