无法更改其他类的标签文字

时间:2016-01-17 13:47:31

标签: vb.net

我试图更改Form1中标签的文字,表单中包含以下内容:

Private Sub BKW_DoWork(sender As Object, e As DoWorkEventArgs) Handles BKW.DoWork

    MyFunction() ' This function is located in the class 'General function

End Sub

在同一Form1我也有:

 Private Delegate Sub UpdateLabelDel(ByVal txt As String)

Public Sub UpdateLabel(ByVal txt As String)
    If Me.InvokeRequired Then
        Invoke(New UpdateLabelDel(AddressOf UpdateLabel), txt)
    Else
        Label1.Text = txt
    End If
End Sub
GeneralFunction类中的

我有这段代码来更改文本标签:

Dim frm As New Form1
frm.UpdateLabel("Starting function")

如何看到我从名为MyFunction()的{​​{1}}致电BackGroundWorker,此功能使用Form1中的BKW更新文本。问题是位于同一Form1中的.UpdateLabel不会更改任何文本,有什么问题?

1 个答案:

答案 0 :(得分:1)

这会创建一个新表单

Dim frm As New Form1

因此,您不会更改所看到的表单上的文本,而是在未显示的完全独立的表单上进行更改。

相反,将对当前表单的引用传递给需要它的代码。像这样:

MyFunction(Me)

函数签名会期望引用,如下所示:

Public Sub MyFunction(ByVal form As Form1)

在该函数中,您可以从该变量引用表单实例:

form.UpdateLabel("Starting function")

基本上,如果你有需要引用对象的代码(类,方法等),调用它的代码应该为它提供引用。