VB中的选项卡控件

时间:2016-07-27 15:19:27

标签: tabs vb6 tabcontrol

我正在研究传统的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上设置

1 个答案:

答案 0 :(得分:0)

出于一些非常奇怪的原因 - 我似乎已经得到了这种差异,因为我在VALIDATE属性中进行了操作。当我在LostFOCUS中输入相同的代码时,它似乎工作正常。感谢大家的帮助!