Reader Level:

Masked TextBox In WPF

By Rahul Saxena on May 10, 2010
In this article I am going to show how we can create a masked textbox in wpf.

While taking input from the user it's very necessary that user should type input in correct datatype, mean if integer value required then user should type integer value and if string required then should type string. In WPF I am going to show how we can bound user to do that, by masking textbox.

This is my XAML code:

<Window x:Class="MaskedTextBoxInWPF.MainWindow"



        Title="Masked Text Box In WPF" Height="350" Width="525">


        <TextBlock Height="23" HorizontalAlignment="Left" Margin="98,80,0,0" Name="textBlock1" Text="Enter Value:" VerticalAlignment="Top" />

        <TextBox Height="23" HorizontalAlignment="Left" Margin="184,80,0,0" Name="textBoxValue" PreviewTextInput="textBoxValue_PreviewTextInput" DataObject.Pasting="textBoxValue_Pasting" VerticalAlignment="Top" Width="120" />




Here I use 2 property of TextBox  PreviewTextInput="textBoxValue_PreviewTextInput" DataObject.Pasting="textBoxValue_Pasting". 

This is XAML.cs code:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Data;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Imaging;

using System.Windows.Navigation;

using System.Windows.Shapes;


namespace MaskedTextBoxInWPF


    /// <summary>

    /// Interaction logic for MainWindow.xaml

    /// </summary>

    public partial class MainWindow : Window


        public MainWindow()





        private void textBoxValue_PreviewTextInput(object sender, TextCompositionEventArgs e)


            e.Handled = !TextBoxTextAllowed(e.Text);



        private void textBoxValue_Pasting(object sender, DataObjectPastingEventArgs e)


            if (e.DataObject.GetDataPresent(typeof(String)))


                String Text1 = (String)e.DataObject.GetData(typeof(String));

                if (!TextBoxTextAllowed(Text1)) e.CancelCommand();


            else e.CancelCommand();



        private Boolean TextBoxTextAllowed(String Text2)


            return Array.TrueForAll<Char>(Text2.ToCharArray(),

                delegate(Char c) { return Char.IsDigit(c) || Char.IsControl(c); });






When run the application then:


Image 1.

If user try to type string value in this textbox then he/she can't type. Permission only to type int value.

Rahul Saxena
Rahul Saxena

Rahul K Saxena is working as a Technical Analyst in Noida, India. He is Masters in Computers Application. Here in the IT industry for more than 6+ years and his main technical skills include SharePoint 2010, MOSS 2007, ... Read more