建立2个窗体form1 form2
form1中有2个button (gotof2用于跳转到form2,button1用于判断textbox1中是否输入了字符)
form2中有1个textbox1和1个gotof1 textbox用于输入字符 gotof1用于跳转到form1窗口
在form1建立一个
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
if (f2.textBox1.Text != string.Empty)
{
MessageBox.Show("文本不为空");
}
else
{
MessageBox.Show("文本为空");
} } private void gotof2_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.Show();
}
在form2中
private void gotof1_Click(object sender, EventArgs e)
{
Form1 f1 = new Form1();
f1.Show();
}
这里textbox1的modify属性已经改为public
但是不论我是否在textbox1输入字符,判断该文本框中依然为空,愁死我了!
那个高人给指导指导,谢谢了!
form1中有2个button (gotof2用于跳转到form2,button1用于判断textbox1中是否输入了字符)
form2中有1个textbox1和1个gotof1 textbox用于输入字符 gotof1用于跳转到form1窗口
在form1建立一个
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
if (f2.textBox1.Text != string.Empty)
{
MessageBox.Show("文本不为空");
}
else
{
MessageBox.Show("文本为空");
} } private void gotof2_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.Show();
}
在form2中
private void gotof1_Click(object sender, EventArgs e)
{
Form1 f1 = new Form1();
f1.Show();
}
这里textbox1的modify属性已经改为public
但是不论我是否在textbox1输入字符,判断该文本框中依然为空,愁死我了!
那个高人给指导指导,谢谢了!
你new了一个Form2()那form2.textBox1里肯定永远都是空的
Form2 f2 = new Form2();
private void button1_Click(object sender, EventArgs e)
{
if (f2.textBox1.Text != string.Empty)
{
MessageBox.Show("文本不为空");
}
else
{
MessageBox.Show("文本为空");
} } private void gotof2_Click(object sender, EventArgs e)
{
f2.Show();
}
问题关键在于new,new产生的窗体和你原来显示的窗体已经不是同一个窗体了。
一个简单的解决办法就是用单件模式,这样可以保证你每次操作的对象都是同一个对象而不至于总是new一个新的对象出来。
一个更简单的办法是直接设置两个静态变量来保存form1和form2的引用,然后你就直接用通过这两个静态变量来互相访问两个form对象。
public static form1 getThis()
{
if (m_this == null || m_this.IsDisposed())
m_this = new form1();
return m_this;
}在form2里加上如下部分:private static form2 m_this = null;
public static form2 getThis()
{
if (m_this == null || m_this.IsDisposed())
m_this = new form2();
return m_this;
}然后在你其他所有new form1和new form2的地方全部换成form1.getThis()和form2.getThis(),比如将button1_Click中的Form2 f2 = new Form2(); 换成Form2 f2 = Form2.getThis(); 这样应该就可以了
system.windows.Form.Control.Isdisposed是属性,但此处被当作方法来使用
FormA a = new FormA();
FormA b = new FormA();
//你会认为a 和b 是同一个对象么?如果会,那我没的说了
FormA CreateA()
{
FormA a = new FormA();
return a;
}
FormA CreateB()
{
FormA b = new FormA();
return b;
}
//同理a 和 b也是不同的,把CreatB中的 b 换成a,结果一样的,局部变量而已。
//这样上面两个函数就一样了,合并掉
//每次调用都返回不同的对象,就是你的点击事件了