vs的form怎么退出

vs的form怎么退出,第1张

当您按下停止按钮时,您可以期望应用程序不再执行任何代码(这使您没咐可以退出无限循环) ).如果执行更多代码,则停友哪止按钮将是关闭按钮.使用停止按钮,您好察码可以杀死您的应用程序,而无需打开Taskman,这也可能会杀死VS.

建议在图标的上下文菜单上有一个关闭菜单项.当用户单击它时,您的应用程序将关闭&清理,使您的程序正常退出

。。。。。 亲  windows桌面窗口应用  入口决定必须是 STA线程

如果你关毁帆旁闭了form 你用 application.run 启动的 form1 那么程序进程一定会退出释放,想进一切办法的退出释放(不单单是form 整轿洞个application 都在结束当前任务)  而你这时候在开启窗口本身。然后程序又去关闭这个窗口。。。

我使用的解决方法 你自己看下:

this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_NeedConfirm)

this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.MainForm_KillALL)

private void MainForm_NeedConfirm(object sender, FormClosingEventArgs e) {

    if (autoconfing) {

        DialogResult startauto = MessageBox.Show("后台正在托管纤橡,确定要退出程序吗?", "请确定", MessageBoxButtons.YesNo, MessageBoxIcon.Question)

        if (startauto.Equals(DialogResult.No)) {

            e.Cancel = true  //e.Cancel 就是取消原本的事件 这里的意思就是取消正在等待的关闭窗口事件

        }

    }

}

private void MainForm_KillALL(object sender, EventArgs e)

{

    System.Environment.Exit(0)

}

我们来整理一下你第二次 *** 作的过程就知道问题在哪里了。

点了form1实例(我们设为f1)里的button1

创建了一个form2的实例 (我们设为f2)并显示f2 隐藏f1

点击f2的button1 创建了一个form1的实例f1' 并显示f1'

注意 因为你是new的 所以这时候实际上是创建了一个新的form1的实例,而原有实例仍然处于隐藏状态并未关闭。

关闭f2

这时候f1未显示 显示的是氏枝f1'

点击f1'上的button2 关闭f1'

此时f1仍旧在内存里处于隐藏状态并未关闭。

而此烂由于f1是程序的入口主窗体 所以虽然这时候它不可见 但程序仍然未退出。

通常情况下创建子窗体的时候森核漏应该对其指定父窗体。以便于把各窗体之间连起来。例如在f1的button onclick中创建f2的时候指定其parentform为f1(this)

这样在f2关闭之前可以让其parentform显示后再关闭f2 而不是创建一个新对象。

Appliction.Exit()确实可以退出程序。但从程序运行的情况来讲 用这种方式解决问题是不对的。因为form1的实例出现了两个。如果程序做得更大些 仍然按这种思路去设计窗体,那岂不是会消耗非常多的资源。程序的运行效率和内存占用情况就非常高,并且是毫无必要的浪费资源。

楼主出现这样的错误是初学者很常见的 其原因就是对面向对象理论的理解还不够。请多翻阅一下面向对象理论书籍以避免此类问题的再次发生。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8249622.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存