# MaskedTextBox

The `MaskedTextBox` control is an editable text field where a user can input text.

## Source code <a href="#source-code" id="source-code"></a>

[MaskedTextBox.cs](https://github.com/AvaloniaUI/Avalonia/blob/master/src/Avalonia.Controls/MaskedTextBox.cs)

### Basic example line TextBox <a href="#basic-example" id="basic-example"></a>

```markup
<Window xmlns="https://github.com/avaloniaui"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
        x:Class="AvaloniaAppTemplate.MainWindow"
        Title="AvaloniaAppTemplate">
    <StackPanel Margin="10">
        <MaskedTextBox Mask="(00) 000 - 000 000 00" />
    </StackPanel>
</Window>
```

produces the following output in **Ubuntu**

![](https://4025525846-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9CodmwWc6hOAzwuMGtm4%2Fuploads%2Fgit-blob-94d4062ad08c8a06def53143a02b56bffdcad158%2Fmaskedtextboxexample1.png?alt=media)

and it behaves like so when filled in by user input

![](https://4025525846-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9CodmwWc6hOAzwuMGtm4%2Fuploads%2Fgit-blob-2c02046dc23154211d2beee20d20f3f9fb5ede16%2Fmaskedtextexample.gif?alt=media)

### Supported Masks

The `Mask` Property accepts a `string` as Configuration and it follows the same Mask configuration as `WPF` [masks](https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.maskedtextbox.mask?view=windowsdesktop-6.0#remarks).

| Masking element      | Description                                                                                                                                                                                   |
| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 0                    | Digit, required. This element will accept any single digit between 0 and 9.                                                                                                                   |
| 9                    | Digit or space, optional.                                                                                                                                                                     |
| #                    | Digit or space, optional. If this position is blank in the mask, it will be rendered as a space in the Text property. Plus (+) and minus (-) signs are allowed.                               |
| L                    | Letter, required. Restricts input to the ASCII letters a-z and A-Z                                                                                                                            |
| ?                    | Letter, optional. Restricts input to the ASCII letters a-z and A-Z                                                                                                                            |
| &                    | Character, required. If the AsciiOnly property is set to true, this element behaves like the "L" element.                                                                                     |
| C                    | Character, optional. Any non-control character. If the AsciiOnly property is set to true, this element behaves like the "?" element.                                                          |
| A                    | Alphanumeric, required. If the AsciiOnly property is set to true, the only characters it will accept are the ASCII letters a-z and A-Z. This mask element behaves like the "a" element.       |
| a                    | Alphanumeric, optional. If the AsciiOnly property is set to true, the only characters it will accept are the ASCII letters a-z and A-Z. This mask element behaves like the "A" element.       |
| .                    | Decimal placeholder. The actual display character used will be the decimal symbol appropriate to the format provider, as determined by the control's FormatProvider property.                 |
| ,                    | Thousands placeholder. The actual display character used will be the thousands placeholder appropriate to the format provider, as determined by the control's FormatProvider property.        |
| :                    | Time separator. The actual display character used will be the time symbol appropriate to the format provider, as determined by the control's FormatProvider property.                         |
| /                    | Date separator. The actual display character used will be the date symbol appropriate to the format provider, as determined by the control's FormatProvider property.                         |
| $                    | Currency symbol. The actual character displayed will be the currency symbol appropriate to the format provider, as determined by the control's FormatProvider property.                       |
| <                    | Shift down. Converts all characters that follow to lowercase.                                                                                                                                 |
| >                    | Shift up. Converts all characters that follow to uppercase.                                                                                                                                   |
| \|                   | Disable a previous shift up or shift down.                                                                                                                                                    |
| \\                   | Escape. Escapes a mask character, turning it into a literal. "\\"                                                                                                                             |
| All other characters | Literals. All non-mask elements will appear as themselves within MaskedTextBox. Literals always occupy a static position in the mask at run time, and cannot be moved or deleted by the user. |
