关于窗体show方法的困惑,该如何解决
发布时间:2011-06-23 15:56:50 文章来源:www.iduyao.cn 采编人员:星星草
关于窗体show方法的困惑
我以前是使用VB5编程的,最近才开始接触VB.NET,好象VB.NET2005有很多个版本一样,我现在使用的是Team Suite版,前几天用2003时好象是什么“企业结构版”。
现在就有个很菜的问题问问各位高人:
我在2003中新建两个窗体命名为frmMain、frmSub,在frmMain上点一个按钮就打开frmSub窗体,可是2003不允许我使用frmSub.show方法,非要
Dim formSub as frmSub
formSub =new frmSub
formSub.Show
这样才行。
而在2005Team Suite版里,我可以象在VB5里一样使用
frmSub.Show
而不必声明一个formSub来使用Show方法,当然也可以象2003里一样先声明再使用Show方法。
是2003和2005的语法有这些区别,还是我本身的语法就有问题呢?
------解决方案--------------------
应该是编译器产生il方式不同的缘故,2003很久前用的,当时确实只能先实例化窗体,2005中楼主可以试一下建立一个新的空项目,再向里面添加窗体(哦,对了,别忘了引入命名空间),hoho,2003的问题又重现了吧,估计是编译器的核心更改了吧,更人性化了??
------解决方案--------------------
是这样的,你定义Dim formSub as frmSub
frmsub是个类,要调用类的方法,你必须先对这个类实例化,即定义一个实例化对象
所一必须先对formSub要New一下
这跟VB5不同,是面向对象的思想
------解决方案--------------------
2005确实把以前2003版本去掉的一些VB6的特性又找回来了。不光是这个,好像还包括编辑并继续功能
------解决方案--------------------
因为之前2003省去了直接调用窗体的写法造成好多的不便,所以在2005中重新引入如VB6直接调用窗体。
下面是MSDN2005介绍
------------------------------------------------
提供属性,用于访问在当前项目中声明的每个 Windows 窗体的实例。
备注
My.Forms 对象提供了当前项目中每个窗体的实例。属性与它所访问的窗体同名。有关向项目添加窗体的信息,请参见如何:向项目添加 Windows 窗体。
您可以通过使用窗体名称(无需限定)访问由 My.Forms 对象提供的窗体。由于属性名称与窗体的类型名称相同,这将允许您如同窗体具有默认实例那样来访问窗体。例如,My.Forms.Form1.Show 等效于 Form1.Show。
My.Forms 对象仅公开与当前项目关联的窗体。它不会提供对在引用 DLL 中声明的窗体的访问。若要访问 DLL 提供的窗体,必须使用窗体的限定名,书写格式为 DllName.FormName。有关更多信息,请参见如何:访问窗体。
可以使用 My.Application.OpenForms 属性获取所有应用程序的打开窗体的集合。
此对象及其属性仅可用于 Windows 应用程序。
属性
My.Forms 对象的每个属性提供了对当前项目中某个窗体实例的访问。属性与此属性所访问的窗体同名,且属性类型与窗体类型相同。
注意
如果存在名称冲突,则用于访问窗体的属性名为 RootNamespace.Namespace.FormName。例如,假设有两个名为 Form1. 的窗体。如果其中一个窗体在根命名空间 WindowsApplication1 和命名空间 Namespace1 中,则您可以通过 My.Forms.WindowsApplication1.Namespace1.Form1 访问该窗体。
My.Forms 对象提供了对在启动时创建的应用程序主窗体实例的访问。对于所有其他窗体,My.Forms 对象创建一个新的窗体实例(在它被访问时),并存储该实例。访问该属性的后续尝试将返回此窗体实例。
您可以通过将 Nothing 赋予该窗体的属性来释放窗体。属性 setter 调用窗体的 Close 方法,然后将 Nothing 赋予存储的值。如果向属性赋予 Nothing 以外的任何值,setter 将引发 ArgumentException 异常。
您可以通过使用 Is 或 IsNot 运算符来测试 My.Forms 对象的属性是否存储了窗体的实例,并可以使用这些运算符来检查此属性的值是否为 Nothing。
注意
通常,Is 或 IsNot 运算符必须读取此属性的值以执行比较。但是,如果属性当前存储的值为 Nothing,该属性将创建窗体的一个新实例,然后返回该实例。不过,Visual Basic 编译器将特殊对待 My.Forms 对象的属性,并且允许 Is 或 IsNot 运算符检查属性的状态而不改变其值。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
关于VB.net中的验证控件
小弟正在开发一个C/S结构程序,有几个界面有较多的textbox,是关于用户数据输入的,现在想做验证,听说有验证控...
-
多表查询问题
我有三个表,一个表为基本表,一个是代码表,一个是出差表
表一 编号,姓名 ,职别
001 李三 101
...
-
DATAGRIDVIEW无法删除未提交的新行?
再DATAGRIDVIEW录入时,想删除最后自动新增的一行,提示无法删除未提交的新行
Private Sub Dat...
-
迷茫了几天,求各位高手指教一下!下面是我的代码!
<!--#include file="webconfig.asp"-->
<%
Dim SortID
SortID=Trim(FLib.SafeSql(R...
-
vb.net 断开和连接网络连接 修改代码
在vb.net中实现断开和连接网络连接的代码,我在网上找了一段代码
Option Explicit On
'首...
-
DataGridView直接导出EXCEL
如何直接读取DataGridView中的数据,并导出成Excel可以直接读取的文件
记住,我不要通过DataTable。
希...
-
求教:如何在vb.net下做一些好看的界面,整一些好看的效果,改变控件,让控件变得好看点?
有没有点例子?有没有点直接可以做控件的软件?
---...
-
在VB中,对SQL数据库进行增删改语句怎么写呢?
小弟做课程设计,遇到了一点小麻烦,卡在了这里,不知道在VB中怎么写对SQL数据库的增删改...
-
文本框中的数字精确到小数点后两位
请问如何让文本框输入数字后精确到小数点后两位,如:当输入112时,显示为112.00
------解决方案--...
-
VB.NET2008如何利用SendMessage修改按钮的Text?
为了测试 Windows API ,试图点Button用SendMessage修改该按钮的Text,竟然没成功,请教...