这似乎是一个微不足道的问题,但我无法让它发挥作用并且花了最后30分钟绕圈: - (
我有一个带有文本框的表单和一个位于单独类中的对象处理程序。我想用对象处理程序的输出更新文本框的内容。
我正试图以这种方式访问它:
formName.textBoxName.Text = value
但没有任何反应。但是,我可以在同一表格上阅读按钮的状态,所以我很困惑。看来我可以从我的班级访问一些表单控件但只能读取吗?
我知道我正在从我的课程中获得输出,因为我可以在调试窗口中查看它。
我尝试过改变文本框的修饰符属性没有区别 - 我确信这是我犯过的一个愚蠢的错误,但我只是看不到它。
如何从其他类更改textBox值?
这是我的代码:
课程:Summarizer.vb
If frm_Settings.btn_NextSection.Enabled = True Then
Console.WriteLine("Boo!")
frm_Settings.txt_NextSection.Text = "Boo!"
End If
表单:frm_Settings由(除其他外)文本框txt_NextSection和按钮btn_NextSection组成。正确读取按钮的值,但无法设置文本框内容。
提前致谢
答案 0 :(得分:1)
我会尽力回答,但很多事情仍然不清楚
执行frm_Settings
你的代码时,可能是,声明并初始化类Summarizer
的实例。
此时,传递给类的构造函数,引用frm_Settings
....
Dim sz = new Summarizer(Me)
sz.ExecuteSomeMethod()
.....
现在,以这种方式为类Summarizer
添加构造函数
Public Class Summarizer
' This is the local reference to the frm_Setting instance passed in the constructor'
Dim callerInstance As frm_Settings
' This constructor receives the instance of the frm_Settings class
'that has created the instance of Summarizer'
Public Sub New(ByVal caller As frm_Settings)
' Set the local reference to the instance passed in'
callerInstance = caller
End Sub
.....
End Class
现在,在需要更新文本框的处理程序中,代码可以更改为
' Use the instance of the frm_Settings that has created the instance of this class'
If callerInstance.btn_NextSection.Enabled = True Then
Console.WriteLine("Boo!")
callerInstance.txt_NextSection.Text = "Boo!"
End If