我对 C# 还很陌生——但一切都很顺利——到目前为止。
我从一个完成大部分工作的表单和一个类开始(非静态和程序部分)。我以表格 1 实例化该类的一个对象并进行登录。
然后我切换到下一个表单,form2。实际上,班级就是这样做的。我在那里有一个方法,其中包含以下行:
this.f2 = new Form2();
接着:
f2.Show();
f2 是 Form2 类型的类成员 - 到目前为止一切正常。
这个 Form2 只包含一个大文本框,我想在其中显示网络事件。事件处理程序工作得很好 - 但对表单的引用似乎不起作用。如果我做
f2.tetBox1.Text = "Some text";
它只是不会更改文本框中的文本。
我在这里做错了什么?
这是对我正在做的事情的更详细描述:
Form1
将一些登录信息传递给myProg
,作为 的一个实例MyClass
。如果登录成功,Form1 调用myProg.makeForm();
这是 MyClass 中的方法的样子:
public void makeForm() {
this.f2 = new Form2();
f2.Show();
this.sendString("start f2");
}
这是MyClass.sendString()
:
private void sendString(string text) {
SystemSounds.Beep.Play();
this.f2.setTextBox(text);
}
如您所见,这调用setTextBox()
了Form2
- 我按照这里的建议实现的。奇怪的是,到目前为止一切正常。Form2 显示一个 textBox1 包含“start f2” - 正如预期的那样。但是当一个事件进来时,textBox1 中的文本不会改变。哔哔声可以正常播放 - 所以方法 sendString() 可以正常调用。
我观察到的一件事:如果在调用之后放置哔声线 this.f2.setTextBox(text);
,则如果从事件处理程序调用该方法,则不会播放它。
f2
,顺便说一句,是 的私有成员MyClass
:
private Form2 f2;