VB 中的选项卡控件
Tab control in VB
我正在处理遗留的 VB6 应用程序。我确定这可能与 VB.NET 有关,所以我会标记它,但请让我知道它是否完全不同(我认为不是)然后我会删除标记以避免混淆。
这是我的问题....
我有一个包含多个选项卡的选项卡控件:0 - 3。在 TabStuff.Tab = 0 上,我有几个文本框和组合框。用户使用键盘 TAB 从索引控件移动。发生的事情是一旦他们到达最后一个控件,即名为 txtCity 的文本框 - 并再次单击键盘 TAB,它会将他们带到 TabStuff.Tab=1.
我的问题是我在 txtCity 上执行 VALIDATE - 我调用了一个函数来验证几个字段是否为 NULL,如果其中一个字段实际上为 NULL,那么我会显示一个 MSgBox 并尝试 setFocus那个控制。但是,当在 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 并将焦点设置在该控件上,而是转到下一个 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
出于一些非常奇怪的原因 - 我似乎一直在得到这种差异,因为我在 VALIDATE 属性 中做了它。当我在 LostFOCUS 中输入相同的代码时,它似乎工作正常。感谢大家对此的帮助!
我正在处理遗留的 VB6 应用程序。我确定这可能与 VB.NET 有关,所以我会标记它,但请让我知道它是否完全不同(我认为不是)然后我会删除标记以避免混淆。
这是我的问题....
我有一个包含多个选项卡的选项卡控件:0 - 3。在 TabStuff.Tab = 0 上,我有几个文本框和组合框。用户使用键盘 TAB 从索引控件移动。发生的事情是一旦他们到达最后一个控件,即名为 txtCity 的文本框 - 并再次单击键盘 TAB,它会将他们带到 TabStuff.Tab=1.
我的问题是我在 txtCity 上执行 VALIDATE - 我调用了一个函数来验证几个字段是否为 NULL,如果其中一个字段实际上为 NULL,那么我会显示一个 MSgBox 并尝试 setFocus那个控制。但是,当在 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 并将焦点设置在该控件上,而是转到下一个 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
出于一些非常奇怪的原因 - 我似乎一直在得到这种差异,因为我在 VALIDATE 属性 中做了它。当我在 LostFOCUS 中输入相同的代码时,它似乎工作正常。感谢大家对此的帮助!