VB6 原生 TextBox 無法直接限制輸入格式,實現「只允許輸入日期」的最佳實踐是使用 DateTimePicker (DTPicker) 控件,或通過 KeyPress 事件過濾輸入。本文給出兩種方案。
DTPicker 圖標,拖放到窗體。Format = dtpCustomCustomFormat = "yyyy-MM-dd"(或 "yyyy/MM/dd")UpDown = True(顯示微調箭頭,禁止手動輸入)Dim dt As Date: dt = DTPicker1.Value。Private Sub Text1_KeyPress(KeyAscii As Integer)
' 允許數字、Backspace、刪除鍵、分隔符
If KeyAscii <> 8 And KeyAscii <> 46 Then
If KeyAscii < 48 Or KeyAscii > 57 Then
If KeyAscii <> 45 And KeyAscii <> 47 Then ' - 或 /
KeyAscii = 0 ' 屏蔽
End If
End If
End If
End Sub
Private Sub Text1_LostFocus()
' 失去焦點時驗證完整日期格式
If Not IsDate(Text1.Text) Then
MsgBox "日期格式錯誤,請輸入 yyyy-MM-dd"
Text1.SetFocus
End If
End Sub
| 維度 | DateTimePicker | TextBox+過濾 |
|---|---|---|
| 用戶體驗 | 日曆彈出、微調、格式固定 | 需手動輸入、易出錯 |
| 代碼量 | 極少 | 需寫驗證邏輯 |
| 數據類型 | 直接返回 Date | 需 CDate 轉換 |
| 兼容性 | 需註冊 MSCOMCT2.OCX | 無依賴 |
DateTextBox 用戶控件,內部組合 TextBox + 月曆彈窗。Date 類型,避免字符串格式不一致。使用標準日期控件,能從源頭消除格式驗證的煩惱。