求教,很简单的一个问题,我是初学的。

lghyf 2013-10-29 12:22:43
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
为什么不能一直循环下去,如果我想它们一直循环执行下去,怎么办?
...全文
263 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lghyf 2013-11-03
  • 打赏
  • 举报
回复
引用 10 楼 u012592437 的回复:
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 我已经测试通过。
感谢大家,太好了,每次到CSDN看来回复心里都暖暖的。我
capricciosoft 2013-10-30
  • 打赏
  • 举报
回复
引用 8 楼 xiaobingking 的回复:
[quote=引用 7 楼 sp1234 的回复:] [quote=引用 楼主 lghyf 的回复:] 为什么不能一直循环下去,如果我想它们一直循环执行下去,怎么办?
如果主线程被你“卡死”,它根本没有时间去显示。[/quote] 也对 假设其 循环了 那在界面上也是看不到的[/quote] 因为有 MsgBox,循环后依然能够看到。你需要逐一点击消息框。你们可以测试一下(用我上面重写的RichTextBox组件或者TextBox)。
capricciosoft 2013-10-30
  • 打赏
  • 举报
回复
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 我已经测试通过。
红衣老大 2013-10-30
  • 打赏
  • 举报
回复
要不 doeven 一下 看看 是不是呢
红衣老大 2013-10-30
  • 打赏
  • 举报
回复
引用 7 楼 sp1234 的回复:
[quote=引用 楼主 lghyf 的回复:] 为什么不能一直循环下去,如果我想它们一直循环执行下去,怎么办?
如果主线程被你“卡死”,它根本没有时间去显示。[/quote] 也对 假设其 循环了 那在界面上也是看不到的
  • 打赏
  • 举报
回复
引用 楼主 lghyf 的回复:
为什么不能一直循环下去,如果我想它们一直循环执行下去,怎么办?
如果主线程被你“卡死”,它根本没有时间去显示。
红衣老大 2013-10-29
  • 打赏
  • 举报
回复
每次 new 一下 不行么
lghyf 2013-10-29
  • 打赏
  • 举报
回复
老大,似乎不是随机数的问题。
vicanary 2013-10-29
  • 打赏
  • 举报
回复
每次取随机数前,都初始化一下种子
lghyf 2013-10-29
  • 打赏
  • 举报
回复
老大,你的代码执行也是和我的一样
threenewbee 2013-10-29
  • 打赏
  • 举报
回复
你的代码的问题是,连续调用rnd返回的随机数一样,所以不再触发新的Changed
threenewbee 2013-10-29
  • 打赏
  • 举报
回复
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

16,556

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧