新建两个formform1,form2在form1上加一个Textbox控件,然后在TextBox的GotFocus的事件中加入如下代码
Private Sub Text1_GotFocus()
Debug.Print "1"
Form2.Show
Command1.SetFocus
End Sub当执行的时候,会打出两个1,如果进行单步调试的话,就会出一个1如果去掉 Command1.SetFocus就会无休止的show form2
想知道是什么问题?
Private Sub Text1_GotFocus()
Debug.Print "1"
Form2.Show
Command1.SetFocus
End Sub当执行的时候,会打出两个1,如果进行单步调试的话,就会出一个1如果去掉 Command1.SetFocus就会无休止的show form2
想知道是什么问题?
一般没有人这么写,你可以 form2.show 1 ,以模式窗体显示
比较理想的是:用全局的逻辑变量进行控制。
普通模块里定义 Public CantShow as boolean
form1
Private Sub Text1_GotFocus()
If Not CantShow Then
Debug.Print "1"
Form2.Show
End If
End Subform2
Private Sub Form_Unload(Cancel As Integer)
CantShow = true
End Sub代码调试过了,很好
Debug.Print "1"
Command1.SetFocus '这两句换个位置
Form2.Show
End Sub
to ljhdi() :我现在用的就是你的这种方法。不过这个form2的显示是只显示一次了,但是获得焦点的控件会获得两次
如
form1 中
Private Sub Text1_GotFocus()
Debug.Print "1"
Text2.SetFocus '这两句换个位置
Form2.Show
End SubPrivate Sub Text2_GotFocus()
Debug.Print "2"
End Sub这个时候text2的gotfocus会触发两次这个到底是怎么造成的呢?有办法解决吗
把TabIndex設為0..但別設Visible=False.
setfocus
這句話是有問題的.
在Form2顯示之前是一次,當正次選中Form1時才會第二次触发text2的gotfocus
所以解決方法是:
Private Sub Text1_GotFocus()
Debug.Print "1"
Text2.SetFocus '这两句换个位置
othercontrol.SetFocus '將焦点給其它控件
Form2.Show
End Sub
要解决也很简单,就是要让Form1激活的时候text1不得到焦点!
只有把那句设焦点的语句去掉才会死循环。麻烦你们试过了再说.....