VB6是否将文本框输入限制为1900到当前日期范围内的数字?
如何将文本框输入限制为1900到当前日期范围内的数字VB6是否将文本框输入限制为1900到当前日期范围内的数字?,vb6,Vb6,如何将文本框输入限制为1900到当前日期范围内的数字 Private Sub txtYear_Change() If Not IsNumeric(txtYear.Text) Then txtYear.Text = "" ElseIf txtYear.Text < 1900 Or txtYear.Text > Year(Date) Then txtYear.Text = "" End If Exit Sub Private S
Private Sub txtYear_Change()
If Not IsNumeric(txtYear.Text) Then
txtYear.Text = ""
ElseIf txtYear.Text < 1900 Or txtYear.Text > Year(Date) Then
txtYear.Text = ""
End If
Exit Sub
Private Sub txtu Change()
如果不是数字(txtYear.Text),则
txtYear.Text=“”
如果txtYear.Text<1900或txtYear.Text>Year(日期),则
txtYear.Text=“”
如果结束
出口接头
您需要将该代码放置在txtYear\u Validate()
事件中,而不是更改事件中。每次击键都会触发更改,因此几乎总是会立即失败。在验证事件中,在完成之前不要验证条目。如中所述,您应该使用验证事件
我只想补充一点,您的代码仍然有一个缺陷,即它允许用户输入十进制数字(例如1900.10)。为了避免这种情况,您可以添加另一个条件:
Private Sub txtYear_Validate(Cancel As Boolean)
If Not IsNumeric(txtYear.Text) Then
txtYear.Text = ""
ElseIf txtYear.Text < 1900 Or txtYear.Text > Year(Date) Then
txtYear.Text = ""
ElseIf Fix(txtYear.Text) <> txtYear.Text Then ' Choose one:
txtYear.Text = Fix(txtYear.Text) ' - Replace it with the integer part.
'txtYear.Text = "" ' - Clear the text.
End If
End Sub
Private Sub txtwear\u验证(取消为布尔值)
如果不是数字(txtYear.Text),则
txtYear.Text=“”
如果txtYear.Text<1900或txtYear.Text>Year(日期),则
txtYear.Text=“”
ElseIf Fix(txtYear.Text)txtYear.Text然后“选择一个:
txtYear.Text=Fix(txtYear.Text)“-将其替换为整数部分。
“txtYear.Text=”“”-清除文本。
如果结束
端接头
优点。为了进一步说明,最好在输入无效时将Cancel设置为True,以便文本控件保留焦点(用于更正),并确保窗体上的Cancel按钮的CausesValidation
属性设置为false,以便用户可以在没有有效输入的情况下取消。@BillHileman我同意。我只是不想更改OP的逻辑,但是当然,将取消设置为True是一个更好的视觉指示。谢谢您的回复!