【发布时间】:2015-01-09 06:48:05
【问题描述】:
我有以下几点: 我有一个有两种形式的 GUI。 Form2 通过一个按钮通过 Form1 打开。两种形式都有文本框,我希望它们相互通信(一种形式可以从另一种形式中获取文本框的条目)。我现在在 Form2 中所做的是:
private Form1 m_form = null;
public Form2(Form1 f)
{
InitializeComponent();
m_form = f;
}
对于文本框功能,例如:
public String getLocation()
{
return LocationBox.Text;
}
效果很好。所以 Form2 可以从 Form1 中读取条目。现在我想让 Form1 从 Form2 读取文本框条目并尝试了同样的事情(这可能是错误的):
private Form2 m_form2 = null;
public Form1(Form2 f2)
{
InitializeComponent();
m_form2 = f2;
}
然后是一些功能,例如我发布的功能,但每次我想使用 Form2 中的 Form1 读取文本框时,我都会收到“null”和“NullReference”异常。哪里出错了?
编辑:好的,我解决了一部分。添加
Form2 m_form2 = new Form2(this);
m_form2.Show();
解决了 NullReferenceException 的问题。没有线 m_form2.Show()
它传递空字符串,但现在每次我点击一个按钮,form2 都会出现。
【问题讨论】:
-
你已经形成了一个'循环引用'。现在是鸡蛋问题。哪一个会先来? Form1 需要 Form2 引用,而 Form2 需要 Form1 引用。
-
如何避免这种情况?一种方法很好用,另一种方法不行
-
好的,我想我宁愿把这个放在另一个问题中