JayBeeOH

Masked TextBox Demo

May 20th, 2015
472
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VB.NET 12.25 KB | None | 0 0
  1. '------------------------------------------------------------------------------------------
  2. '           Notice of My Copyright and Intellectual Property Rights
  3. '
  4. ' Any intellectual property contained within the program by Joseph L. Bolen remains the
  5. ' intellectual property of the Joseph L. Bolen. This means that no person may distribute,
  6. ' publish or provide such intellectual property to any other person or entity for any
  7. ' reason, commercial or otherwise, without the express written permission of Joseph L. Bolen.
  8. '
  9. '                 Copyright © 2015. All rights reserved.
  10. '        All trademarks remain the property of their respective owners.
  11. '-------------------------------------------------------------------------------------------
  12. ' Program Name:   MaskedTextBox Demo
  13. '
  14. ' Author:         Joseph L. Bolen
  15. ' Date Created:   May 2015
  16. '
  17. ' Description:    Demonstrate the use of the MaskedTextBox with ErrorProvider.
  18. '
  19. '                 Documentation is at:
  20. '                   App's screen image is at: http://imgur.com/RjMBnCZ
  21. '                   App's Visual Basic .NET code is at http://pastebin.com/4njJ74nF
  22. '                   Video tutorial at YouTube: http://www.youtube.com/user/bolenpresents
  23. '-------------------------------------------------------------------------------------------
  24.  
  25. Public Class MainForm
  26.  
  27. #Region " Form events"
  28.  
  29.     ' Form loads and basic initialization is set.
  30.     Private Sub MainForm_Load(sender As Object, e As EventArgs) _
  31.         Handles Me.Load
  32.  
  33.         ' Force validation to pass all checks. This is the default setting.
  34.         Me.AutoValidate = AutoValidate.EnablePreventFocusChange
  35.     End Sub
  36.  
  37.     Private Sub MainForm_FormClosing(sender As Object, e As FormClosingEventArgs) _
  38.         Handles MyBase.FormClosing
  39.  
  40.         ' Must set e.Cancel to false to exit program,
  41.         ' if form's AutoValidate is set to EnablePreventFocusChange.
  42.         e.Cancel = False
  43.     End Sub
  44.  
  45. #End Region
  46.  
  47. #Region " Mainline Processing Section"
  48.  
  49.     ' Place value of masked textboxes into corresponding labels
  50.     Private Sub ProcessButton_Click(sender As Object, e As EventArgs) _
  51.         Handles ProcessButton.Click
  52.  
  53.         ErrorProvider1.Clear()
  54.  
  55.         If ValidateChildren() Then
  56.  
  57.             Numeric5DigitLabel.Text = Numeric5DigitMaskedTextBox.Text
  58.             PhoneNumberLabel.Text = PhoneNumberMaskedTextBox.Text
  59.             ShortDateLabel.Text = ShortDateMaskedTextBox.Text
  60.             UpperCaseLabel.Text = UpperCaseMaskedTextBox.Text.Trim
  61.  
  62.             ' Place cursor in first input control.
  63.             Numeric5DigitMaskedTextBox.Focus()
  64.         End If
  65.     End Sub
  66.  
  67.  
  68.     Private Sub ClearButton_Click(sender As Object, e As EventArgs) _
  69.         Handles ClearButton.Click
  70.  
  71.         ' Clear MaskedTextBoxes
  72.         Numeric5DigitMaskedTextBox.Clear()
  73.         PhoneNumberMaskedTextBox.Clear()
  74.         ShortDateMaskedTextBox.Clear()
  75.         UpperCaseMaskedTextBox.Clear()
  76.  
  77.         ' Clear Labels
  78.         Numeric5DigitLabel.Text = String.Empty
  79.         PhoneNumberLabel.Text = String.Empty
  80.         ShortDateLabel.Text = String.Empty
  81.         UpperCaseLabel.Text = String.Empty
  82.  
  83.         ' Clear ErrorProvider
  84.         ErrorProvider1.Clear()
  85.  
  86.         ' Place cursor in first input control.
  87.         Numeric5DigitMaskedTextBox.Focus()
  88.     End Sub
  89.  
  90.     ' Change TextMaskFormat setting for all MaskedTextBoxes.
  91.     Private Sub RadioButton_CheckedChapted(sender As Object, e As EventArgs) _
  92.         Handles IncludeLiteralsRadioButton.CheckedChanged,
  93.                 IncludePromptRadioButton.CheckedChanged,
  94.                 IncludePromptNLiteralsRadioButton.CheckedChanged,
  95.                 ExcludePromptNLiteralsRadioButton.CheckedChanged
  96.  
  97.         ' Clear Labels
  98.         Numeric5DigitLabel.Text = String.Empty
  99.         PhoneNumberLabel.Text = String.Empty
  100.         ShortDateLabel.Text = String.Empty
  101.         UpperCaseLabel.Text = String.Empty
  102.  
  103.         Select Case True
  104.             Case IncludeLiteralsRadioButton.Checked
  105.                 Numeric5DigitMaskedTextBox.TextMaskFormat = MaskFormat.IncludeLiterals
  106.                 PhoneNumberMaskedTextBox.TextMaskFormat = MaskFormat.IncludeLiterals
  107.                 ShortDateMaskedTextBox.TextMaskFormat = MaskFormat.IncludeLiterals
  108.                 UpperCaseMaskedTextBox.TextMaskFormat = MaskFormat.IncludeLiterals
  109.             Case IncludePromptRadioButton.Checked
  110.                 Numeric5DigitMaskedTextBox.TextMaskFormat = MaskFormat.IncludePrompt
  111.                 PhoneNumberMaskedTextBox.TextMaskFormat = MaskFormat.IncludePrompt
  112.                 ShortDateMaskedTextBox.TextMaskFormat = MaskFormat.IncludePrompt
  113.                 UpperCaseMaskedTextBox.TextMaskFormat = MaskFormat.IncludePrompt
  114.             Case IncludePromptNLiteralsRadioButton.Checked
  115.                 Numeric5DigitMaskedTextBox.TextMaskFormat = MaskFormat.IncludePromptAndLiterals
  116.                 PhoneNumberMaskedTextBox.TextMaskFormat = MaskFormat.IncludePromptAndLiterals
  117.                 ShortDateMaskedTextBox.TextMaskFormat = MaskFormat.IncludePromptAndLiterals
  118.                 UpperCaseMaskedTextBox.TextMaskFormat = MaskFormat.IncludePromptAndLiterals
  119.             Case ExcludePromptNLiteralsRadioButton.Checked
  120.                 Numeric5DigitMaskedTextBox.TextMaskFormat = MaskFormat.ExcludePromptAndLiterals
  121.                 PhoneNumberMaskedTextBox.TextMaskFormat = MaskFormat.ExcludePromptAndLiterals
  122.                 ShortDateMaskedTextBox.TextMaskFormat = MaskFormat.ExcludePromptAndLiterals
  123.                 UpperCaseMaskedTextBox.TextMaskFormat = MaskFormat.ExcludePromptAndLiterals
  124.         End Select
  125.     End Sub
  126.  
  127. #End Region
  128.  
  129. #Region " MaskInputRejected Section"
  130.  
  131.     Private Sub Numeric5DigitMaskedTextBox_MaskInputRejected(sender As Object, e As MaskInputRejectedEventArgs) _
  132.         Handles Numeric5DigitMaskedTextBox.MaskInputRejected
  133.  
  134.         '' Using MessageBox.
  135.         'Dim ErrorMsg As String = "Error: " & e.RejectionHint.ToString() &
  136.         ' " at position: " & (e.Position + 1).ToString()
  137.         'MessageBox.Show(ErrorMsg)
  138.  
  139.         ErrorProvider1.SetError(Numeric5DigitMaskedTextBox, String.Empty)
  140.  
  141.         If Numeric5DigitMaskedTextBox.MaskFull Then
  142.             ErrorProvider1.SetError(Numeric5DigitMaskedTextBox,
  143.                                     "You cannot enter any more data into the field. Delete some digits in order to insert more data.")
  144.         Else
  145.             ErrorProvider1.SetError(Numeric5DigitMaskedTextBox,
  146.                                     "Error: " & e.RejectionHint.ToString() & " at position: " & (e.Position + 1).ToString())
  147.             'ErrorProvider1.SetError(Numeric5DigitMaskedTextBox,
  148.             '                        "You can only add numeric characters (0-9) into this field.")
  149.         End If
  150.     End Sub
  151.  
  152.     Private Sub PhoneNumberMaskedTextBox_MaskInputRejected(sender As Object, e As MaskInputRejectedEventArgs) _
  153.         Handles PhoneNumberMaskedTextBox.MaskInputRejected
  154.  
  155.         ErrorProvider1.SetError(PhoneNumberMaskedTextBox, String.Empty)
  156.  
  157.         If PhoneNumberMaskedTextBox.MaskFull Then
  158.             ErrorProvider1.SetError(PhoneNumberMaskedTextBox,
  159.                                     "You cannot enter any more data into the field. Delete some digits in order to insert more data.")
  160.         Else
  161.             ErrorProvider1.SetError(PhoneNumberMaskedTextBox,
  162.                                     "You can only add numeric characters (0-9) into this field.")
  163.         End If
  164.     End Sub
  165.  
  166.     Private Sub ShortDateMaskedTextBox_MaskInputRejected(sender As Object, e As MaskInputRejectedEventArgs) _
  167.         Handles ShortDateMaskedTextBox.MaskInputRejected
  168.  
  169.         ErrorProvider1.SetError(ShortDateMaskedTextBox, String.Empty)
  170.  
  171.         If ShortDateMaskedTextBox.MaskFull Then
  172.             ErrorProvider1.SetError(ShortDateMaskedTextBox,
  173.                                     "You cannot enter any more data into the field. Delete some digits in order to insert more data.")
  174.         Else
  175.             ErrorProvider1.SetError(ShortDateMaskedTextBox,
  176.                                     "You can only add numeric characters (0-9) into this field.")
  177.         End If
  178.     End Sub
  179.  
  180.     Private Sub UpperCaseMaskedTextBox_MaskInputRejected(sender As Object, e As MaskInputRejectedEventArgs) _
  181.         Handles UpperCaseMaskedTextBox.MaskInputRejected
  182.  
  183.         ErrorProvider1.SetError(UpperCaseMaskedTextBox, String.Empty)
  184.  
  185.         If UpperCaseMaskedTextBox.MaskFull Then
  186.             ErrorProvider1.SetError(UpperCaseMaskedTextBox,
  187.                                     "You cannot enter any more data into the field. Delete some characters in order to insert more data.")
  188.         Else
  189.             ErrorProvider1.SetError(UpperCaseMaskedTextBox,
  190.                                     "You can only add characters into this field.")
  191.         End If
  192.     End Sub
  193.  
  194. #End Region
  195.  
  196. #Region " Masked Textbox TypeValidationCompleted Section"
  197.  
  198.     ' Validation of data entered. Example of date validation.
  199.     Private Sub ShortDateMaskedTextBox_TypeValidationCompleted(sender As Object, e As TypeValidationEventArgs) _
  200.         Handles ShortDateMaskedTextBox.TypeValidationCompleted
  201.  
  202.         ErrorProvider1.SetError(ShortDateMaskedTextBox, String.Empty)
  203.  
  204.         'If not a required field. Strip Prompt and Literals to see if empty string.
  205.         If ShortDateMaskedTextBox.Text.Replace("/", "").Replace("_", "").Trim = String.Empty Then Exit Sub
  206.  
  207.         If Not e.IsValidInput Then
  208.             ErrorProvider1.SetError(ShortDateMaskedTextBox,
  209.                                     "The data you supplied must be a valid date in the format mm/dd/yyyy.")
  210.             e.Cancel = True
  211.             Beep()
  212.         Else
  213.             ' Now that the input has passed basic type validation, enforce more specific type rules.
  214.             ' This could be done in a validating event for this MaskedTextBox instead of here.
  215.             Dim DateEntered As DateTime = CDate(e.ReturnValue)
  216.             If (DateEntered < DateTime.Now) Then
  217.                 ErrorProvider1.SetError(ShortDateMaskedTextBox,
  218.                                         "The date in this field must be greater than today's date.")
  219.                 e.Cancel = True
  220.                 Beep()
  221.             End If
  222.         End If
  223.     End Sub
  224.  
  225. #End Region
  226.  
  227. #Region " Validating Section"
  228.  
  229.     Private Sub Numeric5DigitMaskedTextBox_Validating(sender As Object, e As System.ComponentModel.CancelEventArgs) _
  230.         Handles Numeric5DigitMaskedTextBox.Validating
  231.  
  232.         ErrorProvider1.SetError(Numeric5DigitMaskedTextBox, String.Empty)
  233.  
  234.         Dim aNumericValue As Integer
  235.         Integer.TryParse(Numeric5DigitMaskedTextBox.Text, aNumericValue)
  236.         If aNumericValue < 0 OrElse aNumericValue > 50000 Then
  237.             ErrorProvider1.SetError(Numeric5DigitMaskedTextBox,
  238.                                     "Value entered must be between 0 and 50000.")
  239.             e.Cancel = True
  240.             Beep()
  241.         End If
  242.     End Sub
  243.  
  244.  
  245.     Private Sub PhoneNumberMaskedTextBox_Validating(sender As Object, e As System.ComponentModel.CancelEventArgs) _
  246.         Handles PhoneNumberMaskedTextBox.Validating
  247.  
  248.         ErrorProvider1.SetError(PhoneNumberMaskedTextBox, String.Empty)
  249.  
  250.         ' If not a required field. Strip Prompt and Literals to see if empty string.
  251.         If PhoneNumberMaskedTextBox.Text.Replace("(", "").Replace(")", "").Replace("-", "").Trim = String.Empty Then Exit Sub
  252.  
  253.         ' However, if some digits have been entered, it must be fill completely.
  254.         If Not PhoneNumberMaskedTextBox.MaskCompleted Then
  255.             ErrorProvider1.SetError(PhoneNumberMaskedTextBox,
  256.                                     "Phone number is not completely entered.")
  257.             e.Cancel = True
  258.             Beep()
  259.         End If
  260.     End Sub
  261.  
  262.     Private Sub UpperCaseMaskedTextBox_Validating(sender As Object, e As System.ComponentModel.CancelEventArgs) _
  263.         Handles UpperCaseMaskedTextBox.Validating
  264.  
  265.         ErrorProvider1.SetError(UpperCaseMaskedTextBox, String.Empty)
  266.  
  267.         If (UpperCaseMaskedTextBox.Text.Trim <> String.Empty) _
  268.             AndAlso (UpperCaseMaskedTextBox.Text.Trim <> "JOE") Then
  269.  
  270.             ErrorProvider1.SetError(UpperCaseMaskedTextBox,
  271.                                     "You can only enter JOE into this field.")
  272.             e.Cancel = True
  273.             Beep()
  274.         End If
  275.     End Sub
  276.  
  277. #End Region
  278.  
  279. End Class
Advertisement
Add Comment
Please, Sign In to add comment