新手:vb.net new出来的窗口 在执行me.close()后还会执行后面的语句才关闭,这是为什么

问题描述

例子:点击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();让它在没有窗体的情况下也能自己运行.

时间: 2024-08-24 10:08:45

新手:vb.net new出来的窗口 在执行me.close()后还会执行后面的语句才关闭,这是为什么的相关文章

vb.net向另一个窗口中的文本框内写入字符

问题描述 vb.net向另一个窗口中的文本框内写入字符 如题,现有两个窗口,在form1中有button1,form2中有textbox1,需要通过button1把textbox1中的字符改为123,不用show和load方式,有没有最简便的方法? 解决方案 把form2的textbox1的modifier属性设置为public Dim f As Form2 = CType(Application.OpenForms("Form2"), Form2) f.textbox1.Text =

Outlook2010日历提醒窗口单击"消除"后邮箱无反应

故障现象: 在使用 Outlook 2010 时,可能出现在日历提醒窗口中点击"消除"按钮后 Outlook 2010 无响应的问题,这是由 Outlook 更新补丁 KB2553406 引起,只要卸载掉即可恢复正常. 解决方案: 1.单击"开始"按钮,打开"控制面板",然后单击"卸载程序"按钮. 2.在"安装或卸载程序"窗口中,单击"查看已安装更新". 电脑常识 3.在"查看

dockablepane-mfc mdi窗口最小化状态恢复后没有自动刷新

问题描述 mfc mdi窗口最小化状态恢复后没有自动刷新 程序刚运行时的界面 最小化恢复以后界面 可能是垂直工具条加上以后导致的,之前好像没有这种情况 垂直工具条时用CDockablePane里面嵌一个CMFCToolbar做的,代码为 #include "stdafx.h" #include "ToolboxPane.h" #include "resource.h" CToolboxPane::CToolboxPane(void) { } CT

百度api-百度API怎么在聚合后还会显示信息窗口

问题描述 百度API怎么在聚合后还会显示信息窗口 如题,我在百度地图上用 markers.push(new BMap.Marker(pt)); var markerClusterer = new BMapLib.MarkerClusterer(map, {markers:markers}); 实现了标注的聚合.但是聚合后我在标注上显示的信息窗口就没有了. 怎么才能让它在聚合后仍能显示

窗口被其他程序覆盖后,重新显示时不会重绘

问题描述 (MFC)注释掉窗口函数Onpaint中的CDialog::OnPaint();,当窗口被其他程序覆盖后,重新显示时不会重绘,只显示空白窗口对话框,使用鼠标拖动一下,就恢复正常了,请高手指点应该怎么做啊. 解决方案 本帖最后由 hailinouc 于 2014-11-20 08:20:18 编辑

关于vb.net子类化其它窗口的问题

问题描述 在网上看到一个例程,把"AboutMe"加到窗口的系统菜单,程序如下,vb.net的:PublicClassForm1'–引用Win32ApiPrivateDeclareFunctionGetSystemMenuLib"user32"(ByValhWndAsIntPtr,ByValbRevertAsInt32)AsInt32PrivateDeclareFunctionInsertMenuLib"user32"Alias"Ins

vb实现强制重画窗口某一区域

这个例子演示了如何强制重画窗口某一区域.有时这是很需要的,例如当你使用LockWindowUpdate API 函数来加快某一控件的数据加载速度时. 新建一个工程,添加一个模块,代码如下: Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Private Type POINTAPI X As Long Y As Long End Type Private Declare Functio

VB.net如果获取其他窗口标题栏

问题描述 首先申明3个APIPrivateDeclareFunctionGetWindowTextLib"user32"Alias"GetWindowTextA"(ByValhwndAsIntPtr,ByVallpStringAsString,ByValcchAsInteger)AsIntegerPrivateDeclareFunctionGetWindowTextLengthLib"user32"Alias"GetWindowText

VB+SQL数据库管理系统中,如何在无数据源的情况下执行SQL

数据|数据库|数据源|执行 一般的数据库系统编程教程都是在开始编程的时候创建数据库,并在系统中生成用户数据源.系统数据源和文件数据院,在集成开发环境中,通过数据源连接到数据库.那么,如何在没有数据源的情况下,进行编程.生成应用程序要操纵的数据库以及表呢?(如:应用程序在安装完毕后,第一次启动时生成相应的数据库). 方法:在应用程序的ADO对象的连接字符串中指定DBMS的合法用户名和密码,并指定数据库驱动程序及要连接到目标主机. 如:连接到本机的SQL SERVER 假设 用户名为 SA  密码为