2013-01-25 98 views
0

我是新來的Visual Basic 6,所以請耐心等待(並徹底回答您的問題)。VB6:數組的控件字段,檢查它是否是數字

我正在建立一個表單,我需要檢查在其中一個字段中輸入的信息是否爲數字,否則程序必須發出嗶聲。

領域是控件數組的一部分,它被命名爲txtMyField(0)

在我的代碼

最後一件事我已經寫了:

Private Sub txtMyField_Change(Index As Integer) 
If Not IsNumeric(txtMyField(0).Text) Then 
    Beep 
End If 
End Sub 

我不知道如果這個代碼是正確的,我不知道如何調用Sub來使用它,以便在插入數據庫之前檢查字段的值。

非常感謝您的幫助!

回答

2

您可以使用Validate事件來做到這一點。您需要確保CausesValidation屬性爲true,如果是,則會爲該控件引發Validate事件。

你的事件可能是這個樣子:

Private Sub txtMyField_Validate(Index As Integer, Cancel As Boolean) 
    If Not IsNumeric(txtMyField(Index).Text) Then 
     Beep 
     Cancel = True 
    End If 
End Sub 

這將確保你的控件數組中的所有控件是數字(因爲它們的CausesValidation屬性設置爲True在啓動時)。如果其中一個控件爲空或包含非數字字符,則當控件失去焦點時,您將收到嗶聲。

注意一些事情在這裏

  • 發出嘟嘟聲是不是真的來指示驗證錯誤的好辦法。在窗體中顯示錯誤的消息框或文本框通常是更好的方法。用戶可能聽不到您的嘟嘟聲,或者可能不知道「嘟嘟」表示「您需要在此字段中提供號碼」。
  • 您的代碼引用了索引爲0的控件。該事件可能觸發控件數組中的任何控件,因此檢查控件(0)的值在您應該驗證控件時不是合乎邏輯的事情5)(例如)。的
+0

非常感謝! – user523129

1

,而不是發出蜂鳴聲,你也可以讓你的texbox只接受某些鍵

例如一個文本框,將只接受數字鍵和退格鍵:

Private Sub Text1_KeyPress(KeyAscii As Integer) 
    KeyAscii = NrOnly(KeyAscii) 
End Sub 

Private Function NrOnly(intKey As Integer) 
    Dim intReturn As Integer 
    intReturn = intKey 
    Select Case intKey 
    Case vbKeyBack 
    Case vbKey0 To vbKey9 
    Case Else 
     intReturn = 0 
    End Select 
    NrOnly = intReturn 
End Function 

您可以添加更多的情報到NrOnly功能允許更多的鍵,或檢查某些邊界

要小心,雖然用戶仍然可以使用鼠標輸入其他數據通過複製&粘貼

+1

不要忘記仍然處理'Change'事件來捕獲正在粘貼的文本。 – Deanna