C# MaskedTextBox ExampleThis C# tutorial shows how to use the MaskedTextBox control in Windows Forms.
accepts text input of a specific format. We often require phone numbers to have their area code and also the correct number of digits. To solve this problem, we use the MaskedTextBox control in Windows Forms.TextBox
To get started,
please add a MaskedTextBox control to your Windows Forms program by double-clicking on the icon in the toolbox. Next, try changing the properties of the MaskedTextBox by right-clicking on it and selecting properties.
Mask: You can find predefined masks for integers, phone numbers, dates, Social Security Numbers, time in various formats, and zip codes.
Note: This tutorial shows the MaskedTextBox with the Social Security Number format specified.
MaskInputRejected: Add this by double-clicking on the MaskedTextBox control. We show the RejectionHint and the Position of the error.
Example program for MaskedTextBox: C#
public partial class Form1 : Form
private void maskedTextBox1_MaskInputRejected(object sender,
// Set the window title text
// ... to the MaskInputRejectedEventArgs information.
this.Text = "Error: " +
"; position: " +
The MaskedTextBox can do more than simply ensure a format is followed: it can convert the input into a C# type for you as well. In this example, we set the format to the "Short date" mask pattern.
Then: We added the TypeValidationCompleted event handler by going to the event list in Visual Studio.
Tip: To get the validated result, please access the ReturnValue property from the TypeValidationEventArgs. We need to cast this object.
Info: The TypeValidationCompleted event handler is triggered when the form is dismissed.
Example program 2 for MaskedTextBox: C#
public partial class Form1 : Form
private void maskedTextBox1_TypeValidationCompleted(object sender,
// This event is raised when the enclosing window is closed.
// ... We show a MessageBox that details the DateTime.
DateTime value = (DateTime)e.ReturnValue;
MessageBox.Show("Validated: " + value.ToLongDateString());
There are several more properties you can adjust on the MaskedTextBox control. Here we examine most of them in brief to give an overview of which ones might be useful to you. Many are rarely used.Property
AsciiOnly: The AsciiOnly property enforces that every character entered not be an accented or Unicode-only character.
Tip: This is useful when you require strict data input, as many database systems do not need non-ASCII characters.
CutCopyMaskFormat. Users may want to copy the text from a MaskedTextBox to their clipboards. This property lets you adjust how the text will be copied. It specifies whether the separators are included in the copied text.
HidePromptOnLeave and HideSelection. These two boolean properties determine how the MaskedTextBox is adjusted when the user focuses another control in the form. You could hide some of the prompt characters when they are not needed.
PasswordChar and PromptChar.
The MaskedTextBox lets you change the character that appears when a password is entered. It also allows you to change the prompt character. By default, the prompt character is an underscore "_".
UseSystemPasswordChar: Finally, you can use the system-defined password character for when your MaskedTextBox is a password box.
ResetOnPrompt and ResetOnSpace.
These two properties are usability features of the MaskedTextBox control. When you have a mask, there will be some prompt characters such as the "/" or "_" values.
And: If your user types either of those characters, and the MaskedTextBox has one of those characters, this is considered valid input.
Summary. The MaskedTextBox control in Windows Forms enforces the range of input that is allowed into the text box. It is ideal for when you want to collect phone numbers, identification numbers, dates or times, or even simple integers.
© 2007-2020 Sam Allen. Every person is special and unique. Send bug reports to firstname.lastname@example.org.