VB实用教程上提到,可以定义对象变量,举例如下:
dim formVariable as form1
dim buttonVariable as command1
dim textVariable as textbox我把以上三条语句输入VB,运行后:
第一、三条语句没有出错,第二条语句报错:编译错误,用户定义类型未定义。
http://www.moon-soft.com/program/bbs/readelite5824.htm  此帖子说,可以用控件名作为对象变量的类型
1.我不明白form1和command1有什么本质区别吗?不都是一个控件的名称吗?为什么form1就不报错?2.教材上说:“对象类型包括:对象名称(name属性),控件集合(control,textbox),窗体集合,屏幕对象等。“我不理解的是 对象名称 怎么能作为 对象类型。因为对象变量是:把一个变量声明成一种对象类型,然后对这个变量操作就是对所有这类对象操作。所以我可以理解dim textVariable as textbox;因为textbox是代表一种对象的类型。而dim buttonVariable as command1,我就没法理解。command1是具体到的某一个对象,而不是某一类对象。我如果执行“buttonVarible.caption=按钮”这条语句,到底是哪些控件的caption属性变成了“按钮”两字?是所有的CommandButton类型的控件的caption属性都改成了" 按钮" 吗?3.如果要把第二条语句修改正确,如何更改?

解决方案 »

  1.   

    1/2条语句,你在工程中必须有一个form1,在窗体里必须有一个command1控件
    3条是一个类名,当然不会有错。
      

  2.   

    在你的窗体上没有command1按钮时报错
      

  3.   

    to 理论派和hjker0070   我的窗体上有名为command1的按钮   你可以自己试验一下,就会报错
      

  4.   

    声明对象变量的As后,只能是类名而不能是类的实例,VB中的Form很特殊,每个窗体都是一个私有类,这也是容易让初学者混淆的地方。
    commandbutton才是类名,command1只是其一个实例,不能用于声明。
      

  5.   

    1、按照面向对象的方法可以这么理解。
        Form跟Form1都是类,相当于Form1继承了Form,所以第一条语句正确。
        Command1是由CommandButton类实例化的一个对象而不是类,所以第二条语句错误。
        TextBox也是类,所以第三条语句正确。    如果对VB中的类不少很了解,可以察看对象浏览器。2、你看得教材因该是比较糟糕的,建议读MSDN文档。3、dim buttonVariable as CommandButton
      

  6.   

    to homezj(小吉),to  阿花   谢谢,我明白了!