我试图更新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,所以我不知道我错过了这里的一些声明或属性?
谢谢帮忙
2条答案
按热度按时间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,如下所示:
1.现在,从Class1调用您在Form1中声明的任何Label或元素,如下所示:
Form1.instance.txt_Title .Text =“从类1中删除所需文本”
我希望它能帮助别人,因为我的斗争像2天,因为我是自学程序员,我的乐趣,我不知道这是从学校的人基本顺便说一句...
fkaflof62#
假设Class1仍有Shared变量来引用Form1:
在Form1中,您只需:
现在Class1具有对屏幕上实际显示的Form1示例的正确引用,并且可以访问该示例的所有成员,例如:
您不需要为上面的Label1提供单独的共享变量来访问它。