通过后台工作器使用另一类VB.Net中的方法更新主窗体上的控件

甘吉

我整天都在撞墙,试图弄清楚这个问题。

我正在完成一个程序,可以简单地删除特定临时文件夹中的文件。我已经读到,有时最好为方法和变量创建单独的类。因此,我为几个方法创建了一个单独的类,以删除指定目录中的文件和文件夹。我使用的是后台工作在我的Form1中类和我打电话给我deleteFiles()从我的方法WebFixProcesses在类DoWork的事件Form1的类。我正在使用后台工作程序,以便可以轻松地将进度报告回主窗体上的进度栏。

文件被删除没有问题,但是我只是无法在主表单上得到标签来反映当前正在删除的文件。标签没有任何变化。我知道公式是正确的,因为如果该方法在Form1中,则可以正常工作而我只是使用:

 Invoke(Sub()
     lblStatus.Text = File.ToString
     lblStatus.Refresh()
 End Sub)

这是我从WebFixProcesses调用的方法

Public Shared Sub deleteFiles(ByVal fileLocation As String)
    For Each file As String In Directory.GetFiles(fileLocation)
        Try

            fileDisplay.Add(file)
            For i = 1 To fileDisplay.Count
                file = fileDisplay(i)
                Form1.BackgroundWorker1.ReportProgress(CInt(i / fileDisplay.Count) * 100)

            Next
            IO.File.Delete(file)                
            Form1.labelText(file)
            Form1.labelRefresh()

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    Next
End Sub

labelText()labelRefresh()是我主要形式中的方法,它们使用委托来尝试将信息传递给控件:

Public Sub labelText(ByVal file As String)
    If lblStatus.InvokeRequired Then
        Dim del As New txtBoxDelegate(AddressOf labelText)
        Me.Invoke(del, file)
    Else
                   lblStatus.Text = file.ToString()
    End If

End Sub
Public Sub labelRefresh()
    If lblStatus.InvokeRequired Then
        Dim del As New txtBoxRefDelegate(AddressOf labelRefresh)
        Me.Invoke(del)
    Else
                   lblStatus.Refresh()

    End If
End Sub

如果有人可以帮助我告知我可能做错了什么,将不胜感激,因为我的头为此感到非常痛苦。也许我犯错了,只是固执地将我的方法放在自己的类中。但是任何帮助都会很棒。谢谢你们!

约翰·基勒

汉斯在问题注释上写的是正确的:Form1是一个类型,而不是实例,但是为了使程序更容易(来自VB6),M $进行了“混合”操作,使您可以使用表单名称作为实例在主线程中的形式。

但是,仅当您在线程上时此方法才有效

如果您Form1另一个线程引用,Form1则会创建一个新实例

要解决此问题,请将以下代码添加到表单中:

Private Shared _instance As Form1
Public ReadOnly Property Instance As Form1
    Get
        Return _instance
    End Get
End Property

我们将使用此属性存储表单的当前实例。为此,请将以下行添加到Load事件中:

Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
    _instance = Me

    'other code here
End Sub

现在,从每个类的任何线程中,如果您使用

Form1.Instance

...您会得到实际的表格。现在,您Invoke甚至可以使用相同的形式:

    Me.instance.Invoke(Sub()
                           Me.lblStatus.Text = "Hello World"
                       End Sub)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过Background Worker通过另一个类VB.Net中的方法更新主窗体上的控件

来自分类Dev

如何使用另一类中的代码?(Java)

来自分类Dev

无法从类更新主窗体上的ObjectListView

来自分类Dev

如何在另一类的方法中使用一类的对象?

来自分类Dev

一类的成员变量可以在另一类的方法中使用吗?

来自分类Dev

一类数据在另一类数据C#中的使用

来自分类Dev

在另一类的方法中使用一个类中的方法

来自分类Dev

一个类在Java中“使用”另一类?实现“ uses-a”类

来自分类Dev

一个类应使用函数指针调用另一类的方法

来自分类Dev

如何使用另一类的on单击方法传递一个类的值

来自分类Dev

另一类中的C ++类用法

来自分类Dev

另一类的方法调用Lua

来自分类Dev

另一类中的非静态变量

来自分类Dev

无法从另一类获取文本以在另一类上打印(菜鸟)

来自分类Dev

如何使一类中的方法可从另一类访问?

来自分类Dev

从另一类的方法访问一类的方法的最佳实践

来自分类Dev

将方法作为回调从一类传递到另一类

来自分类Dev

从一类调用方法到另一类?

来自分类Dev

从一类到另一类的方法调用不起作用?

来自分类Dev

将布尔方法从一类传递到另一类

来自分类Dev

从一类调用方法到另一类?

来自分类Dev

一类的对象的静态数组在另一类/构造函数中

来自分类Dev

一类成为另一类的实例。这些实例需要使用原始类中的信息,如何组织?

来自分类Dev

从一个类的主体调用,从另一类的主体方法调用

来自分类Dev

从另一类的成员函数返回ENUM(在一个类中定义)

来自分类Dev

是从另一类/接口继承实体类的正确方法吗?

来自分类Dev

是从另一类/接口继承实体类的正确方法吗?

来自分类Dev

将鼠标悬停在另一类上时如何更改它的CSS?

来自分类Dev

Xcode 11-实例方法...与另一类别的相同方法冲突

Related 相关文章

  1. 1

    通过Background Worker通过另一个类VB.Net中的方法更新主窗体上的控件

  2. 2

    如何使用另一类中的代码?(Java)

  3. 3

    无法从类更新主窗体上的ObjectListView

  4. 4

    如何在另一类的方法中使用一类的对象?

  5. 5

    一类的成员变量可以在另一类的方法中使用吗?

  6. 6

    一类数据在另一类数据C#中的使用

  7. 7

    在另一类的方法中使用一个类中的方法

  8. 8

    一个类在Java中“使用”另一类?实现“ uses-a”类

  9. 9

    一个类应使用函数指针调用另一类的方法

  10. 10

    如何使用另一类的on单击方法传递一个类的值

  11. 11

    另一类中的C ++类用法

  12. 12

    另一类的方法调用Lua

  13. 13

    另一类中的非静态变量

  14. 14

    无法从另一类获取文本以在另一类上打印(菜鸟)

  15. 15

    如何使一类中的方法可从另一类访问?

  16. 16

    从另一类的方法访问一类的方法的最佳实践

  17. 17

    将方法作为回调从一类传递到另一类

  18. 18

    从一类调用方法到另一类?

  19. 19

    从一类到另一类的方法调用不起作用?

  20. 20

    将布尔方法从一类传递到另一类

  21. 21

    从一类调用方法到另一类?

  22. 22

    一类的对象的静态数组在另一类/构造函数中

  23. 23

    一类成为另一类的实例。这些实例需要使用原始类中的信息,如何组织?

  24. 24

    从一个类的主体调用,从另一类的主体方法调用

  25. 25

    从另一类的成员函数返回ENUM(在一个类中定义)

  26. 26

    是从另一类/接口继承实体类的正确方法吗?

  27. 27

    是从另一类/接口继承实体类的正确方法吗?

  28. 28

    将鼠标悬停在另一类上时如何更改它的CSS?

  29. 29

    Xcode 11-实例方法...与另一类别的相同方法冲突

热门标签

归档