private void button1_Click(objectsender,System.EventArgs e)
{
Form2 f2=new Form2();
f2.Show();
}
private void button2_Click(objectsender,System.EventArgs e)
{
Form2 f2=new Form2();
f2.Close();
}
//点击button2,怎么关不掉button1打开的form2?
我是初学者,请各位指教,谢谢!
{
Form2 f2=new Form2();
f2.Show();
}
private void button2_Click(objectsender,System.EventArgs e)
{
Form2 f2=new Form2();
f2.Close();
}
//点击button2,怎么关不掉button1打开的form2?
我是初学者,请各位指教,谢谢!
他们在内存中是两块不同的空间。你把FORM2写成全局变量吧。而且一般都是只接在FORM2上点击关闭的,不知道你这么做是为了什么?
form2本是就是全局变量,我想通过form1的button2来关闭form2 ,请各位指点!
private void button1_Click(objectsender,System.EventArgs e)
{ f2.Show();
}
private void button2_Click(objectsender,System.EventArgs e)
{
f2.Close();
}
private void button1_Click(object sender, EventArgs e)
{
frm = new Form2();
frm.Show();
} private void button2_Click(object sender, EventArgs e)
{
frm.Close();
}
private void button1_Click(object sender, EventArgs e)
{
frm = new Form2();
frm.Show();
} private void button2_Click(object sender, EventArgs e)
{
if (frm != null)
{
frm.Close();
}
}
private void button1_Click(object sender, System.EventArgs e)
{
Form2.InstanceForm = new Form2();
Form2.InstanceForm.Show();
} private void button2_Click(object sender, System.EventArgs e)
{
Form2.InstanceForm.Close();
}Form2:
public class Form2 : System.Windows.Forms.Form
{
public static Form2 InstanceForm = null;
如果点击两次button1,则打开两个form2,但再点击button2关闭form2 时,只能关闭一个form2,请指教?
我只是想把点击button1打开的form2通过点击button2来关闭,你上面的方很好!
但是如果我连续打开两个form2, 再点button2时,只能关闭最后打开的form2,之前的form2关不掉!
如果要关闭所有form2,请问怎么实现?!!!
frm.Owner = this;这样可以遍历所有打开的Form2,并根据Form2的Name属性,决定关闭哪一个。foreach(Form frm in this.OwnedForms)
{
if(frm.Name = "XXXXX")
{
frm.Close();
}
}
{
if( frm is Form2 )
frm.Close();
}
{
Form2 frm = new Form2();
frm.Name = "frm";//此处要设置一个Name属性,否则name属性为""
frm.Owner = this;
frm.Show(); } private void button2_Click(object sender, EventArgs e)
{
foreach (Form frm in this.OwnedForms)
{
if (frm.Name == "frm")
{
frm.Close();
}
} }
如果只可以打开一个窗体的话,这涉及到单实例的问题,可以用singleton模式实现。如果是可以打开多个窗体的话,要对窗体进行管理了,你可以用container来管理using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace WindowsApplication1
{
public partial class Form1 : Form
{
IContainer container;
public Form1()
{
InitializeComponent();
container = new Container();
} private void button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
container.Add(form2);
form2.Show();
} private void button2_Click(object sender, EventArgs e)
{
container.Dispose();
}
}
}
private void button1_Click(objectsender,System.EventArgs e)
{ f2.Show();
}
private void button2_Click(objectsender,System.EventArgs e)
{
f2.Close();
}
private void button1_Click(object sender, EventArgs e)
{
frm = new Form2();
frm.Show();
} private void button2_Click(object sender, EventArgs e)
{
if (frm != null)
{
frm.Close();
}
}
------------------------------------------
支持。LZ看看。
private Form2 frm;
private void button1_Click(object sender, EventArgs e)
{
frm = new Form2();
frm.Show();
} private void button2_Click(object sender, EventArgs e)
{
if (frm != null)
{
frm.Close();
}
}
------------------------------------------
支持。LZ看看。
------------------------------
支持个头呀,这段代码明显是错的。frm不等于空,不代表内部资源没有释放。
private void button1_Click(object sender, System.EventArgs e)
{
f2.Show();
}
//Button1实现的是打开2窗体
private void button2_Click(object sender, System.EventArgs e)
{
f2.Close();
}
//Button2实现的是关闭2窗体
//着是在Form1中的代码
不过估计你也不回用着个
呵呵
Form1:
private void button1_Click(object sender, System.EventArgs e)
{
Form2.InstanceForm = new Form2();
Form2.InstanceForm.Show();
}private void button2_Click(object sender, System.EventArgs e)
{
if (Form2.InstanceForm != null)
{
Form2.InstanceForm.Close();
}
}Form2:
public class Form2 : System.Windows.Forms.Form
{
public static Form2 InstanceForm = null;
TNND,怎么没人支持我这个呢,单件模式。弹出N个窗体的需求,除非你有病玩大家
Form1:
private void button1_Click(object sender, System.EventArgs e)
{
Form2.InstanceForm = new Form2();
Form2.InstanceForm.Show();
}private void button2_Click(object sender, System.EventArgs e)
{
if (Form2.InstanceForm != null)
{
Form2.InstanceForm.Close();
}
}Form2:
public class Form2 : System.Windows.Forms.Form
{
public static Form2 InstanceForm = null;
-----------------------------------------------------------程序不对,还要人看,你这不是误导人家么,你先点击button1打开一个窗口,然后点击右上方的x关闭按钮关闭,然后再点击一下button2,把报错的msg给大家看看吧。