我正在處理傳統的VB6應用程序。我相信這可能與VB.NET有關,所以我會標記它,但請讓我知道,如果它是完全不同的(我不認爲這是),那麼我會刪除標記,以避免混淆。在VB中的選項卡控件
這裏是我的問題....
我有多個選項卡Tab控件:0 - 3.在TabStuff.Tab = 0,我有幾個文本框和組合框。用戶使用鍵盤TAB從索引控件移動。發生什麼事是一旦他們到達最後一個名爲txtCity的文本框 - 再次單擊鍵盤TAB,它將它們帶到TabStuff.Tab = 1。
我的問題是我對txtCity做了VALIDATE - 我調用一個函數來驗證幾個字段不是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
所以,如果城市是空的,它顯示了MSGBOX,停留在片= 0和SETFOCUS上的控制,而是轉到下一個tab = 1,並將焦點設置在該選項卡的第一個控件上。
編輯:
在txtCITY_LostFocusIf 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
這是我使用的代碼。我點擊TAB上txt1沒有輸入任何文字,所以這得到執行,但在msgbox,焦點被設置在txt2上
我刪除了'vb.net'標籤。如果你的代碼是在傳統的'vb6'中,那麼它肯定與'vb.net'沒有關係。 – sstan
@sstan夠公平!我認爲它會是類似的語法。 – BobSki
也刪除vba標籤 - 它使用一個稍微不同的控制集。那就是說,它是什麼類型的控制? 'TabStrip'? 'SSTab'?還有別的嗎? – Comintern