Category / Section
How to restrict the user to enter only valid time in WinForms MaskedEditBox?
1 min read
Custom validate event
We can restrict the user to enter only valid time using CustomValidate event of MaskedEditBox. This event is raised when typing each character and validates the input.
C#
private void maskedEditBox1_MaskCustomValidate(object sender, Syncfusion.Windows.Forms.Tools.MaskCustomValidateArgs e) { currentText.Remove(0, this.currentText.Length); currentText.Append(this.maskedEditBox1.Text); if (e.CurrentIndex ==0) { currentText[e.CurrentIndex] = e.CurrentCharacter; if (e.CurrentCharacter <= '0' || e.CurrentCharacter > '2') { e.Handled = true; e.Accepted = false; } } else if (e.CurrentIndex ==1) { currentText[e.CurrentIndex] = e.CurrentCharacter; if (currentText[0] > '1') { if (e.CurrentCharacter >= '5') { e.Handled = true; e.Accepted = false; } } } else if (e.CurrentIndex ==3) { currentText[e.CurrentIndex] = e.CurrentCharacter; if (e.CurrentCharacter > '5') { e.Handled = true; e.Accepted = false; } } else if (e.CurrentIndex == 4) { currentText[e.CurrentIndex] = e.CurrentCharacter; } }
VB
Private Sub maskedEditBox1_MaskCustomValidate(ByVal sender As Object, ByVal e As Syncfusion.Windows.Forms.Tools.MaskCustomValidateArgs) Handles maskedEditBox1.MaskCustomValidate currentText.Remove(0, Me.currentText.Length) currentText.Append(Me.maskedEditBox1.Text) If e.CurrentIndex =0 Then currentText(e.CurrentIndex) = e.CurrentCharacter If e.CurrentCharacter <= "0"c OrElse e.CurrentCharacter > "2"c Then e.Handled = True e.Accepted = False End If EndIf ElseIf e.CurrentIndex =1 Then currentText(e.CurrentIndex) = e.CurrentCharacter If currentText(0) > "1"c Then If e.CurrentCharacter >= "5"c Then e.Handled = True e.Accepted = False End If End If EndIf ElseIf e.CurrentIndex =3 Then currentText(e.CurrentIndex) = e.CurrentCharacter If e.CurrentCharacter > "5"c Then e.Handled = True e.Accepted = False End If EndIf ElseIf e.CurrentIndex = 4 Then currentText(e.CurrentIndex) = e.CurrentCharacter End If End Sub