本文介绍了当从其他类(Windows Forms应用程序中Form1类之外)调用UpdateLabel函数时,Me.InvokeRequired返回false的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
大家好,
我正在处理任务,因此我有以下代码来更新表单上的标签:
I am working with tasks, so I've got the following code to update a label on my form:
Private Delegate Sub UpdateLabelDelegate(ByVal s As String)
Public Sub UpdateLabel(ByVal s As String)
If Me.InvokeRequired Then
Me.BeginInvoke(New UpdateLabelDelegate(AddressOf UpdateLabel), New Object() {s})
Return
End If
Me.lbl_Info.Text += s & vbCrLf
End Sub
如果我在Form1类本身中调用此方法,它会很好,但是如果我尝试从处理线程(在另一个类中)更新标签,则Me.InvokeRequired返回false,并且标签不会更新:
It works fine if I call this within the Form1 class itself, but if I try to update the label from a processing thread (in a different class), then Me.InvokeRequired returns false, and the label does not get updated:
Form1.UpdateLabel(fi.Name & ": Processed! " & Now)
我应该从其他类中调用此函数吗?
Is there a different way I should be calling this function from the other class?
谢谢,
嘉莉
Thanks,
Carrie
推荐答案
将myForm更改为新Form1
Dim myForm as New Form1
这正确吗?
这篇关于当从其他类(Windows Forms应用程序中Form1类之外)调用UpdateLabel函数时,Me.InvokeRequired返回false的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!