关于窗体调用方式的讨论,欢迎排砖!
--------------
大家都知道,窗体就是一个类,按照对象的调用,一般应该先new 一个,然后 show,可是vb为了提高易用性,对于窗体的调用可以使用一种有别于其他对象调用的方法:就是直接调用窗体名,如 form1.show,这一点对初学者来说入门容易,可是从类对象的创建上来说,又不太规范.
对象的创建应是这样的.比如已经设计了一个窗体,名称为 form1.如果实例这个窗体呢?
dim myform as form1
set myform = new form1
myform.show
以上才是规范的调用方式,不知vb6为何充许以下的方式:
form1.show这样做,就易给初学者造成一种误解,如何可以调用一个类名呢!我当时就一直认为窗体是一个对象,对象才可以直接show的.还有:请教一下,我说的两种调用方式,一定都是正确的,可是我不知哪种方式执行的效率会更高些.

解决方案 »

  1.   

    new 的话,可以同时打开数个相同对象的窗体。
    这点在mdi中被大量应用。
    form.show只能打开自己,sdi里用的比较多吧。
    指教。
      

  2.   

    你可以把窗体理解为类,但起码应该把它作为一种普通的类,像你下面这种调用方式:
    dim myform as form1
    set myform = new form1
    myform.show
    虽然没有错误,但是毫无必要,而且使对这个窗体的控制变得麻烦,比如你要在其他地方卸载这个窗体,就不能用unload form1了,而是需要定义一个form对象类型的全局变量,除非你确实需要这个窗体的多个实例,否则是完全没有必要的。
      

  3.   

    你可以把窗体理解为类,但起码应该把它作为一种普通的类,像你下面这种调用方式:
    dim myform as form1
    set myform = new form1
    myform.show
    虽然没有错误,但是毫无必要,而且使对这个窗体的控制变得麻烦,比如你要在其他地方卸载这个窗体,就不能用unload form1了,而是需要定义一个form对象类型的全局变量,除非你确实需要这个窗体的多个实例,否则是完全没有必要的。
    --------------------
    谢谢指教.
    我想系统自已是不是也把窗体的名称做为一个全局变量来处理呀.而且只有到整个程序全部退出时这个变量才销毁.如果按我的办法来处理,对于不需要从别的地方来引用的前提下来讲,是不是会缩短窗体对象的生成期呀.即窗体关闭就释放了,[对了,如果按我的方法调用,窗体关闭后,还有必要执行一次 set myform =nothing吗,有必要吗?]
      

  4.   

    VB中隐藏了一个跟窗体名称一样的全局变量,假如有窗体Form1,那么就相当于在模块中声明了
    Public Form1 As New Form1
    这个变量名称跟窗体的名称始终一致。
      

  5.   

    VB中隐藏了一个跟窗体名称一样的全局变量,假如有窗体Form1,那么就相当于在模块中声明了
    Public Form1 As New Form1
    这个变量名称跟窗体的名称始终一致。
    ----------------------
    呵呵,我猜对了,所以用
    dim myform as form1
    set myform = new form1
    myform.show
    这种方式调用窗体,是不是就可以避免全局变量了,因为有些窗体关闭后是没必要保存在内存中的,是不是呀?