winforms 如何从类中更新Form1中的标签?

nhhxz33t  于 2023-02-16  发布在  其他
关注(0)|答案(2)|浏览(177)

我试图更新Label,它显然在Form1中,它是count good proxies,如果有异常抛出它,它是count bad proxies,这个标签在Form1中,这个方法是从Class1调用的,所以我声明了Frm as Form1,但它没有调用,也没有更新标签= +1
我读了很多类似的例子在这里的论坛,但我不知道什么是我的解决方案,我想保持代码的代理在Class1如果我把它移到Form1然后它的作品顺便说一句。

    • 我的班级1:**
Imports System.Threading

Public Class Class1
    Public Shared Property Frm As Form1
    Public Shared _Count As Integer
    Public Shared Sub GetProxies()

        While True
            Try
                'MY CODE 

                Interlocked.Increment(_Count)
                Frm.GoodProxyCount()

            Catch ex As Exception
                Frm.OnBadRequestChanged()
            End Try

        End While
        Properties._runningThreads.Remove(Thread.CurrentThread)
    End Sub
End Class
    • 我的Form1 Sub方法:**
Public Class Form1
    Public Sub OnBadRequestChanged()
            Try
                If Me.lblProxies.Text > 0 Then
                    Me.Invoke(Sub() Me.lblProxies.Text -= 1)
                Else
                    If Not Me.chkManualProxies.Checked Then
                        Me.btnScrapeStart()
                    End If
                End If
            Catch ex As Exception
            End Try
        End Sub
    
        Public Sub GoodProxyCount()
            Try
                Me.Invoke(Sub() Me.lbl_count.Text = Class1._Count.ToString())
    
                If Me.lblProxies.Text > 0 Then
                    Me.Invoke(Sub() Me.lblProxies.Text -= 1)
                Else
                    If Not Me.chkManualProxies.Checked Then
                        Me.btnScrapeStart()
                    End If
                End If
            Catch ex As Exception
            End Try
        End Sub
 End Class

我也有同样的问题,我试图更新像frm.checkbox.checked或其他单选按钮不可能更新或填充listview从外部的Form1,所以我不知道我错过了这里的一些声明或属性?
谢谢帮忙

dgiusagp

dgiusagp1#

这里是一个人的答案谁斗争与同样的问题,所以一定要遵循:
1.在Form1类的顶部添加以下声明行:
Public Shared instance As Form1
1.声明标签或复选框等,您希望从其他类或窗体“调用或访问”的内容,如下所示:
Public txt_Title As Label
1.请注意,您必须给予Form1中的其他名称作为真实的名称,例如我的TITLE LABEL名为:txtTitle,但我不得不更改名称,我记得在这个声明中类似的东西。
1.在Form1中创建Sub,如下所示:
公共子示例()示例=我txt_标题= txt标题结束子
1.在Form1_Load中初始化Sub,如下所示:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
   Try
  Instances()
   Catch ex As Exception

         End Try
 End Sub

1.现在,从Class1调用您在Form1中声明的任何Label或元素,如下所示:
Form1.instance.txt_Title .Text =“从类1中删除所需文本”
我希望它能帮助别人,因为我的斗争像2天,因为我是自学程序员,我的乐趣,我不知道这是从学校的人基本顺便说一句...

fkaflof6

fkaflof62#

假设Class1仍有Shared变量来引用Form1:

Public Class Class1
    Public Shared Property Frm As Form1
End Class

在Form1中,您只需:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Class1.Frm = Me
End Sub

现在Class1具有对屏幕上实际显示的Form1示例的正确引用,并且可以访问该示例的所有成员,例如:

' ... in Class1 ...
Frm.Label1.Text = "Hello from Class1"

您不需要为上面的Label1提供单独的共享变量来访问它。

相关问题