Masked TextBox In WPF

While taking input from the user, it's necessary that the user should type input in a correct datatype,i.e., if an integer value is required, then the user should type integer value and if a string is required, then they 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.

  1. <Window x:Class="MaskedTextBoxInWPF.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Masked Text Box In WPF" Height="350" Width="525">  
  2.     <Grid>  
  3.         <TextBlock Height="23" HorizontalAlignment="Left" Margin="98,80,0,0" Name="textBlock1" Text="Enter Value:" VerticalAlignment="Top" />  
  4.         <TextBox Height="23" HorizontalAlignment="Left" Margin="184,80,0,0" Name="textBoxValue" PreviewTextInput="textBoxValue_PreviewTextInput" DataObject.Pasting="textBoxValue_Pasting" VerticalAlignment="Top" Width="120" />  
  5.     </Grid>  
  6. </Window>  

Here, I use 2 properties -

  • TextBoxPreviewTextInput="textBoxValue_PreviewTextInput"
  • DataObject.Pasting="textBoxValue_Pasting"

This is XAML.cs code,

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. using System.Windows;  
  6. using System.Windows.Controls;  
  7. using System.Windows.Data;  
  8. using System.Windows.Documents;  
  9. using System.Windows.Input;  
  10. using System.Windows.Media;  
  11. using System.Windows.Media.Imaging;  
  12. using System.Windows.Navigation;  
  13. using System.Windows.Shapes;  
  14. namespace MaskedTextBoxInWPF {  
  15.     ///<summary>  
  16.     /// Interaction logic for MainWindow.xaml  
  17.     ///</summary>  
  18.     publicpartialclassMainWindow: Window {  
  19.         public MainWindow() {  
  20.             InitializeComponent();  
  21.         }  
  22.         privatevoid textBoxValue_PreviewTextInput(object sender, TextCompositionEventArgs e) {  
  23.             e.Handled = !TextBoxTextAllowed(e.Text);  
  24.         }  
  25.         privatevoid textBoxValue_Pasting(object sender, DataObjectPastingEventArgs e) {  
  26.             if (e.DataObject.GetDataPresent(typeof(String))) {  
  27.                 String Text1 = (String) e.DataObject.GetData(typeof(String));  
  28.                 if (!TextBoxTextAllowed(Text1)) e.CancelCommand();  
  29.             } else e.CancelCommand();  
  30.         }  
  31.         privateBoolean TextBoxTextAllowed(String Text2) {  
  32.             returnArray.TrueForAll < Char > (Text2.ToCharArray(), delegate(Char c) {  
  33.                 returnChar.IsDigit(c) || Char.IsControl(c);  
  34.             });  
  35.         }  
  36.     }  

When we run the application, this is the output.

Masked TextBox In WPF
Image 1.

If a user tries to type string value in this textbox, then he/she can't type. It has the permission only to type an integer value.