库尔兰的路德雷斯:有个vb问题,不理解

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/01 17:43:01
private sub form_load()
text1.text=""
text1.setfocus
for i=1 to 10
sum=sum+i
next i
text1.text=sum
end sub
结果是出错的,我不理解
那个setfocus到底是怎么会事啊
看了大家的帮助,不是很懂
谁能举个例子
谢谢
追加10分

text1.setfocus 的语句不能在form_load() 事件中使用,换句话说,form_load() 不支持setfocus方法。setfocus是获得光标的意思。这段程序本身编得就有问题:既然form_load事件发生时,text1.text已经由于for/next语句而获得了文本"55" ,光标已经在text1中,何须text1.setfocus ?你不妨把它改一改,就明白了setfocus的用法了。
在窗体中再增加一个文本框text2,程序修改如下:
private sub form_load()
text1.text=""
text2.text=""
for i=1 to 10
sum=sum+i
next i
text1.text=sum
end sub
------------------------------------------------
Private Sub Form_Click()
Text2.SetFocus
End Sub

看到了吗?增加了一个窗体单击事件,一旦窗体单击事件发生,Text2就获得了焦点(光标)。

SetFocus
将焦点移至指定的控件或窗体。

语法

object.SetFocus

object 所在处代表对象表达式,其值是“应用于”列表中的一个对象。

说明

对象必须是 Form 对象、MDIForm 对象或者能够接收焦点的控件。调用 SetFocus 方法以后,任何的用户输入将指向指定的窗体或控件。

焦点只能移到可视的窗体或控件。因为在窗体的 Load 事件完成前窗体或窗体上的控件是不可视的,所以如果不是在 Form_Load 事件过程完成之前首先使用 Show 方法显示窗体的话,是不能使用 SetFocus 方法将焦点移至正在自己的 Load 事件中加载的窗体的。

也不能把焦点移到 Enabled 属性被设置为 False 的窗体或控件。如果已在设计时将 Enabled 属性设置为 False,必须在使用 SetFocus 方法使其接收焦点前将 Enabled 属性设置为 True。

Private Sub Form_Activate()
Text1.Text = ""
Text1.SetFocus
For i = 1 To 10
Sum = Sum + i
Next i
Text1.Text = Sum
End Sub

这样写就对了,那段代码不能写在Form_Load里
窗体还没启动完呢就让它聚焦当然出错了

在Form_Load事件中,是不能对控件使用SetFocus方法的。
SetFocus方法是向控件置焦点,但在FormLoad时,文本框控件尚未加载。
你可以将以上代码移至Form_Activate事件中使用。

是聚焦的意思,将光标定位到什么地方