楼主,我只想说一句话:在给变量和控件取名的时候不要重名
比如你想让控件名称叫top,但是窗体已经有一个属性叫Top了,这样就重名了,而由于控件和窗体属性的作用范围是相同的,因此VB不允许它们重名,运行时直接给你报错
然后你决定不用top了,改成拼音,但是变量名和控件名又重名了,都叫shangdi,这样程序就不知道你这是指的变量,还是控件了……吗?其实是知道的,这次没有给你报错,因为过程内的变量范围小于控件(模块级),所以这里的shangdi指的是范围较小的变量,左右两边都一样(因为都是一个名字),然后代码的意思就是:让变量等于变量自己的值

你看,没控件什么事了,结果当然不对了
实际上,你要是真的照抄了书上的代码,你就会发现,左右两边是不同的,比如top=txttop.Text,右边比左边多了个txt的前缀(不看后面的Text,那个可以省略的),这就是变量和控件【不重名】的范例;这里多说一点,为什么变量名可以用top呢?还是前面说的作用范围的问题,你在过程里定义了一个变量top,然后用的时候,程序就知道你用的是这个变量,而不是窗体的属性了;如果你不定义变量(即把Dim这一行删掉),程序仍然可以运行,但是会发生神奇的事情:窗口的位置会发生移动(位置取决于你输入的“上底”的值)
