读书人

form窗体关闭有关问题

发布时间: 2013-08-01 15:23:18 作者: rapoo

form窗体关闭问题
有2个窗体form1和form2,form1中有个label和一个button,form2中有一个textbox和一个button,我想点击form1中button使form2出现,而且form1不关闭,然后用form2中button_click事件使textbox传值给form1中label,然后form2关闭。这时候会有2个form1,求解怎么能让那个没值的form1不显示啊。
form1中button_click事件


private void button1_Click(object sender, EventArgs e)
{
Form2 fm = new Form2();
fm.Show();
}

form2中button_click事件
        
private void button1_Click(object sender, EventArgs e)
{
fm1.Visible = false;
this.fm1.label1.Text = this.textBox1.Text;
fm1.Show();
this.Close();
}
对象 textbox label button
[解决办法]


public string Result {get;set;}
private void button1_Click(object sender, EventArgs e)
{
Form2 fm = new Form2();
if(fm.ShowDialog()==DialogResult.OK)
{
fm.Result的值用来做什么?
}

}

2的:
private void button1_Click(object sender, EventArgs e)
{
Result="abc";
this.DialogResult=DialogResult.OK;
Close();
}

怎么会有两个Form1
[解决办法]
基本原理没搞懂啊!在WINFORM 程序中有个program..cs文件 里面默认哪一个是主窗体,所以如果form1是主窗体那么 是关不掉的 除非强制关闭Application.Exit() 那样整个进程会关闭. 你可以 fm1.hide();隐藏起来试试!如果都不是主窗体 那么ShowDialog()弹框 然后根据DialogResult.ok 返回值然后frm1关闭
[解决办法]
引用:
form2中button_click事件


        
private void button1_Click(object sender, EventArgs e)
{
fm1.Visible = false;
this.fm1.label1.Text = this.textBox1.Text;
fm1.Show();
this.Close();
}

上面frm1是new 出来的吧,这个应该是出现2个窗体的原因吧。
如果用ShowDialog()的话,不需要new frm1的,在form2中追加个属性,#5楼的稍微改了下:

Form1的


private void button1_Click(object sender, EventArgs e)
{
Form2 fm = new Form2();
if(fm.ShowDialog()==DialogResult.OK)
{
lable1.text =fm.Result
}

}

2的:
public string Result {get;set;}
private void button1_Click(object sender, EventArgs e)
{
Result=text1.text;
this.DialogResult=DialogResult.OK;
Close();
}

读书人网 >C#

热点推荐