在我的VB.NET窗体应用程序中,我希望在不使用Me.Refresh()方法的情况下连续更新窗体上的labeltext。我该怎么做?
此函数连续返回一个随机整数,并(每次)引发一个事件,该事件调用windows窗体的codebehind中名为Eventing的处理程序在我的VB.NET窗体应用程序中,我希望在不使用Me.Refresh()方法的情况下连续更新窗体上的labeltext。我该怎么做?,vb.net,Vb.net,此函数连续返回一个随机整数,并(每次)引发一个事件,该事件调用windows窗体的codebehind中名为Eventing的处理程序 Public Function MyNumber() As Int64 While (True) Dim myInt As Int64 Randomize() myInt = CInt(Int((100 * Rnd()) + 1)) Rais
Public Function MyNumber() As Int64
While (True)
Dim myInt As Int64
Randomize()
myInt = CInt(Int((100 * Rnd()) + 1))
RaiseEvent ValueChanged(myInt)
Return myInt
End While
End Function
在表单的CodeBehind中,我使用此代码将标签更新为更新标签文本的函数返回的值
Public Sub Eventing(e As Int64) Handles CoolObject.ValueChanged
ActiveForm.Refresh()
Label1.Text = e.ToString
End Sub
问题是:代码运行良好,Label1不断更新,但整个表单冻结
表单上的其他按钮都没有响应,我必须在visual studio上强制停止它感谢您的回复,我使用BackgroundWorker线程解决了这个问题在MyNumber方法中,您正在启动一个无限循环。这会阻塞用户界面。也许您想看看如何使用线程或计时器。还建议使用random类而不是旧的Rnd()函数使用
计时器
,并在勾选
事件处理程序中更改标签
的文本。你可能每秒最多会得到20次更改,但为什么你会想要那么多呢?标签
用于向用户显示文本,它将是一个模糊,每秒更改20次,因此它是什么?不建议使用BackgroundWorker
。可以考虑使用多线程。