winform问题,close()方法能关闭窗体吗?谢谢 c#
代码:privatevoidForm1_FormClosing(objectsender,FormClosingEventArgse){DialogResultre=Me...
代码:
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult re=MessageBox.Show("关闭窗口ma", "", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) ;
Console.WriteLine(re);
if (re== DialogResult.OK)
{
this.Close();
//this.Dispose();
}
}
如果if块里面调用close方法,而且如果单击对话框的确定就会一直弹出对话框,确定一个弹一个。直到单击取消,才退出程序(当然没走if,是该方法执行完了)。
但是使用dispose方法就可以单击确定正常关闭。
求解这两个方法的区别,谢谢! 展开
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult re=MessageBox.Show("关闭窗口ma", "", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) ;
Console.WriteLine(re);
if (re== DialogResult.OK)
{
this.Close();
//this.Dispose();
}
}
如果if块里面调用close方法,而且如果单击对话框的确定就会一直弹出对话框,确定一个弹一个。直到单击取消,才退出程序(当然没走if,是该方法执行完了)。
但是使用dispose方法就可以单击确定正常关闭。
求解这两个方法的区别,谢谢! 展开
5个回答
展开全部
Private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult re = MessageBox.Show("关闭窗口ma", "", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if (re == DialogResult.OK)
{
//这里什么都不用做,直接退出
}
else
{
e.Cancel = true;
//其它选择就不退出
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult re = MessageBox.Show("关闭窗口ma", "", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if (re == DialogResult.OK)
{
this.Close();
//这里就会都会重复执行formClosing这个方法,成了一个死循环
}
else
{
e.Cancel = true;
//其它选择就不退出
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult re = MessageBox.Show("关闭窗口ma", "", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if (re == DialogResult.OK)
{
this.Dispose();//是释放当前的整个窗体资源,不会重复执行formClosing这个方法,所以退出了
}
else
{
e.Cancel = true;
//其它选择就不退出
}
}
微测检测5.10
2023-05-10 广告
2023-05-10 广告
您好!建议咨 深圳市微测检测有限公司,已建立起十余个专业实验室,企业通过微测检测就可以获得一站式的测试与认 证解决方案;(EMC、RF、MFi、BQB、QI、USB、安全、锂电池、快充、汽车电子EMC、汽车手机互 联、语音通话质量),认证遇...
点击进入详情页
本回答由微测检测5.10提供
展开全部
你执行的this.Close() 这个方法的委托就是 Form1_FormClosing这个方法。你每次点击弹出框的确定按钮都会重复执行formClosing这个方法,成了一个死循环,只有当你点击取消的时候,不会重复执行formClosing方法。this.dispose()是释放当前的整个窗体资源,也就是你的这个窗体类的资源。其实他两个没啥区别。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Close表示的是将窗体关闭掉,Dispose表示的是将窗体从内存中施放掉,Close在前Dispose在后
含义是不同的,虽然在你的代码里效果是一样的
就好比Load和Shown一样,前者是窗体加载完成,后者是窗体显示完成
含义是不同的,虽然在你的代码里效果是一样的
就好比Load和Shown一样,前者是窗体加载完成,后者是窗体显示完成
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个代码我现在没工具去尝试。
不过看上去好像是一个死循环?
你把方法写在FormClosing 这个窗口关闭时的事件里面,
每次弹出框你选择关闭的时候选择“是”你又跳回这个方法。
你可以断点调式自己来看。
如果你只想进一次这个FormClosing事件的话,外面定义一个全局变量来控制一下就好。
不过看上去好像是一个死循环?
你把方法写在FormClosing 这个窗口关闭时的事件里面,
每次弹出框你选择关闭的时候选择“是”你又跳回这个方法。
你可以断点调式自己来看。
如果你只想进一次这个FormClosing事件的话,外面定义一个全局变量来控制一下就好。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
反编译看,Close里面调用Dispose() ,但在msdn里面:
在以下两种情况下调用 Close 不会释放窗体:(1) 窗体是多文档界面 (MDI) 应用程序的一部分且是不可见的;(2) 您是使用 ShowDialog 显示的该窗体。在这些情况下,需要手动调用 Dispose 来将窗体的所有控件都标记为需要进行垃圾回收。
望采纳!
在以下两种情况下调用 Close 不会释放窗体:(1) 窗体是多文档界面 (MDI) 应用程序的一部分且是不可见的;(2) 您是使用 ShowDialog 显示的该窗体。在这些情况下,需要手动调用 Dispose 来将窗体的所有控件都标记为需要进行垃圾回收。
望采纳!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询