Tabs VB中的Tab控件

Tabs VB中的Tab控件,tabs,vb6,tabcontrol,Tabs,Vb6,Tabcontrol,我正在开发一个遗留的VB6应用程序。我确信这可能与VB.NET有关,所以我将对其进行标记,但如果它完全不同(我认为不是),请告诉我,然后我将删除标记以避免混淆 这是我的问题 我有一个带有多个选项卡的选项卡控件:0-3。在TabStuff.Tab=0上,我有一些文本框和组合框。用户使用键盘选项卡从索引控件移动。一旦它们到达最后一个控件,即一个名为txtCity的文本框,再次单击键盘选项卡,就会将它们带到TabStuff.TAB=1 我的问题是我确实在txtCity上进行了验证——我调用了一个函数来

我正在开发一个遗留的VB6应用程序。我确信这可能与VB.NET有关,所以我将对其进行标记,但如果它完全不同(我认为不是),请告诉我,然后我将删除标记以避免混淆

这是我的问题

我有一个带有多个选项卡的选项卡控件:0-3。在TabStuff.Tab=0上,我有一些文本框和组合框。用户使用键盘选项卡从索引控件移动。一旦它们到达最后一个控件,即一个名为txtCity的文本框,再次单击键盘选项卡,就会将它们带到TabStuff.TAB=1

我的问题是我确实在txtCity上进行了验证——我调用了一个函数来验证两个字段是否为NULL,如果其中一个字段实际上为NULL,那么我将显示一个MSgBox并尝试将焦点设置在该控件上。但是,当在msgbox上单击OK时,它会转到下一个选项卡,即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\u VALIDATE中

因此,如果city为空,它会显示MsgBox,停留在Tab=0上,并将焦点设置在该控件上,但会转到下一个Tab=1,并将焦点设置在该选项卡的第一个控件上

编辑:

在txtCITY_LostFocus

If Flag = False Then
    TabStuff.Tab = 0
    Exit Sub
End If
我添加了这个,但它仍然会转到tabstuff.tab=1,将焦点设置在选项卡的第一个控件上

编辑2:

在一个新项目中,我分别创建了txt1和txt2-i集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上-我似乎得到了这种差异,因为我在VALIDATE属性中对其进行了签名。当我在LostFOCUS中输入相同的代码时,它似乎工作正常。谢谢大家的帮助

我删除了
vb.net
标记。如果您的代码是遗留的
vb6
,那么它肯定与
vb.net
@sstan没有关系!我想它的语法应该是类似的。同时删除vba标记-它使用了一个稍微不同的控件集。也就是说,这是一种什么样的控制<代码>选项卡条<代码>SSTab?还有什么?您的选项卡控件的按键事件中有代码吗?我认为选项卡的默认行为是在当前选项卡上的字段之间循环-不移动到下一个选项卡。或者可能是您的txtcity lostfocus事件?您不应该在验证事件中执行
setFocus
;在LostFocus事件中执行此操作,或者改为设置
Cancel=True