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

求教,很简单的一个有关问题,小弟我是初学的

2013-11-04 
求教,很简单的一个问题,我是初学的。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 一下 不行么
[解决办法]

引用:
为什么不能一直循环下去,如果我想它们一直循环执行下去,怎么办?


如果主线程被你“卡死”,它根本没有时间去显示。
[解决办法]
引用:
Quote: 引用:

为什么不能一直循环下去,如果我想它们一直循环执行下去,怎么办?


如果主线程被你“卡死”,它根本没有时间去显示。


也对  假设其 循环了   那在界面上也是看不到的
[解决办法]
要不 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 

我已经测试通过。
[解决办法]

引用:
Quote: 引用:

Quote: 引用:

为什么不能一直循环下去,如果我想它们一直循环执行下去,怎么办?


如果主线程被你“卡死”,它根本没有时间去显示。


也对  假设其 循环了   那在界面上也是看不到的


因为有 MsgBox,循环后依然能够看到。你需要逐一点击消息框。你们可以测试一下(用我上面重写的RichTextBox组件或者TextBox)。

热点排行