问题描述
例子:点击form1窗口的按钮“open”,执行下面语句:dimform2asnewForm2form2.Show()跳出Form2窗口,点击form2窗口的按钮“close”,执行下面语句:Me.Close()MessageBox.Show("为什么这句也会执行,然后窗口关闭")‘MessageBox.Show("为什么这句也会执行,然后窗口关闭")为什么此句也会被执行????????????
解决方案
解决方案二:
MessageBox发生在form的close之前。这是一个方法体,每行代码会被依次执行,除非你在MessageBox之前加一个return。
解决方案三:
引用1楼duanzi_peng的回复:
MessageBox发生在form的close之前。这是一个方法体,每行代码会被依次执行,除非你在MessageBox之前加一个return。
如果在form1中Me.Close()MessageBox.Show("为什么这句也会执行,然后窗口关闭")
就不会提示了,这是什么原因呢
解决方案四:
引用2楼ivanwfy的回复:
Quote: 引用1楼duanzi_peng的回复:
MessageBox发生在form的close之前。这是一个方法体,每行代码会被依次执行,除非你在MessageBox之前加一个return。如果在form1中Me.Close()MessageBox.Show("为什么这句也会执行,然后窗口关闭")
就不会提示了,这是什么原因呢
me是个什么玩意.
解决方案五:
引用3楼duanzi_peng的回复:
me是个什么玩意.
VB.NET的Me就是C#里面的this
解决方案六:
编辑器里创建的窗体,和用代码创建的窗体,在执行逻辑上貌似有点小小不同Form不是在Close之后,生命周期就结束了,Close只是关闭而已,窗体还在,只是不显示了。只有在Dispose之后,才会彻底结束释放掉。所以1楼说的是有道理的,那个代码要一直执行下去。而Form1,因为你主贴里没有提到Form1,我猜测Form1是你的主窗体,也就是启动窗体对不对。如果你在Project中设置了:当主窗体关闭时程序结束,那么在Form1.Close()以后,程序就结束了,所以不会执行后面的MSGBOX。
解决方案七:
方法体内的代码都会执行,除非加一个Exit。
解决方案八:
引用5楼andywongz的回复:
编辑器里创建的窗体,和用代码创建的窗体,在执行逻辑上貌似有点小小不同Form不是在Close之后,生命周期就结束了,Close只是关闭而已,窗体还在,只是不显示了。只有在Dispose之后,才会彻底结束释放掉。所以1楼说的是有道理的,那个代码要一直执行下去。而Form1,因为你主贴里没有提到Form1,我猜测Form1是你的主窗体,也就是启动窗体对不对。如果你在Project中设置了:当主窗体关闭时程序结束,那么在Form1.Close()以后,程序就结束了,所以不会执行后面的MSGBOX。
您好!我不是很明白下面一句:如果你在Project中设置了:当主窗体关闭时程序结束,那么在Form1.Close()以后,程序就结束了,所以不会执行后面的MSGBOX。这个设置在哪里,因为我是默认的,Form1是启动窗口。
解决方案九:
不用设置,它默认就是这样的因为使用了Application.Run(newForm1())来执行的,那么当你主窗体关闭了,Application也就退出了,程序整个退出了,代码当然不会继续运行了
解决方案十:
你也可以把它改掉,变成Application.Run();让它在没有窗体的情况下也能自己运行.