关于c#中close 方法的问题

Form1中的button1利用Form2form2=newForm2();form2.Show();打开了form2然后Form1中的button2中写了如下代码:Fo... Form 1 中的button1 利用
Form2 form2 = new Form2();
form2.Show();
打开了form2
然后Form1中的button2 中写了如下代码:
Form2 form2 = new Form2();
form2.Close();

请问为什么关闭不了Form2窗体?
展开
 我来答
我是白羊佐
2010-12-30 · 超过33用户采纳过TA的回答
知道答主
回答量:90
采纳率:0%
帮助的人:74万
展开全部
在C#里有两种情况下调用 Close 不会释放窗体:
(1) 窗体是多文档界面 (MDI) 应用程序的一部分且是不可见的;
(2) 您是使用 ShowDialog 显示的该窗体。在这些情况下,需要手动调用 Dispose 来将窗体的所有控件都标记为需要进行垃圾回收。

注意:
在显示为无模式窗口的 Form 上调用 Close 方法时,不能调用 Show 方法使窗体可见,因为窗体的资源已被释放。若要隐藏窗体然后又使其可见,请使用 Control..::.Hide 方法。

警告:
.NET Framework 2.0 之前,当调用 Application..::.Exit 方法以退出应用程序时,不会引发 Form..::.Closed 和 Form..::.Closing 事件。如果在必须执行的其中一个事件中有验证代码,则在调用 Exit 方法之前,应分别为每个打开的窗体调用 Form..::.Close 方法。

以上为 MSDN原文,希望有用
cdinten
2010-12-30 · TA获得超过6590个赞
知道大有可为答主
回答量:3562
采纳率:56%
帮助的人:1342万
展开全部
form2是局部变量,两个button中所指的不是一个,你可以把form2当做类的成员,放在两个Button外面,
像这样:
Form2 form2 ;
Button1_CLICK()
{
...
}
Button2_Click()
{
...
}
这样一定可以
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
憋不住事儿
2010-12-30 · TA获得超过605个赞
知道小有建树答主
回答量:570
采纳率:85%
帮助的人:168万
展开全部
你在这里创建了两个不同的对象,当然关闭不了了!
试试在Form1的类里(不是button1或button2的方法里)创建Form2的对象
private Form2 form2 = new Form2();
然后再button1,和button2里使用这一个对象名
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
你是谁LCqTt
2010-12-30 · TA获得超过602个赞
知道小有建树答主
回答量:604
采纳率:0%
帮助的人:861万
展开全部
两个form2不一样。
你可以把form2定义为一个类成员变量,就可以了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
swsujianhua
2010-12-30 · 超过10用户采纳过TA的回答
知道答主
回答量:39
采纳率:0%
帮助的人:22.7万
展开全部
this.close()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式