我正在研究传统的VB6应用程序。我确定这可能与VB.NET有关,所以我会标记它,但请告诉我它是否完全不同(我认为不是)然后我将删除标签避免混淆。
这是我的问题......
我有一个带有多个标签的Tab控件:0 - 3.在TabStuff.Tab = 0上,我有一些文本框和组合框。用户使用键盘TAB从索引控件移动。一旦他们到达最后一个名为txtCity的文本框控件 - 再次单击键盘TAB,它会将它们带到TabStuff.Tab = 1。
我的问题是我对txtCity进行了验证 - 我调用了一个函数来验证一些字段是否为NULL,如果其中一个字段实际上是NULL,那么我会显示一个MSgBox并尝试setFocus on那种控制。但是,当在msgbox上单击“确定”时,它将转到下一个选项卡,即TabStuff.tab = 1,这是不正确的。
这是我的一些代码......
Dim FirstName, City as String
flag=false
firstName = txtName.text
city = txtcity.text
if FirstName="" or isnull(FirstName) then
msgbox "Please enter Name"
tabstuff.tab=0
txtname.setfocus
exit sub
elseif city = "" or isnull(city) then
msgbox "Please enter city"
tabstuff.tab=0
txtcity.setfocus
exit sub
end if
flag=true
此代码位于txtCITY_VALIDATE
因此,如果city为空,则显示MsgBox,保持在Tab = 0并且setfocus在该控件上,而是转到下一个tab = 1并将焦点设置在该选项卡的第一个控件上。
编辑:
在txtCITY_LostFocus
中If Flag = False Then
TabStuff.Tab = 0
Exit Sub
End If
我添加了这个,但它仍然转到tabstuff.tab = 1将焦点设置在标签的第一个控件上
编辑2:
在我创建txt1和txt2的新项目中 - 我分别设置了TabIndex 0和1。
Private Sub Txt1_Validate(Cancel As Boolean)
If Txt1.Text = "" Then
MsgBox "no text in txt1"
Txt1.SetFocus
End If
End Sub
这是我使用的代码。我在txt1上单击TAB而不输入任何文本,因此执行此操作,但在msgbox之后,焦点在txt2上设置
答案 0 :(得分:0)
出于一些非常奇怪的原因 - 我似乎已经得到了这种差异,因为我在VALIDATE属性中进行了操作。当我在LostFOCUS中输入相同的代码时,它似乎工作正常。感谢大家的帮助!