I would like to make a fancy invalid character detection , like the one we see in some online websites or mobile applications. I use WPF (.NET Framework) and C# code.
Below is the XAML code of my textbox1 (user input) and textbox2 (invalid character detector).
Note that I use the Material Design themes.
<StackPanel VerticalAlignment="Center" Margin="10,20,10,30">
<TextBox Name="CreatedSQLDatabase"
BorderBrush="Black"
materialDesign:HintAssist.Hint="Add New Database Name"
Style="{StaticResource MaterialDesignFloatingHintTextBox}"
Margin="0,0,0,0"
FontFamily="Champagne & Limousines"
FontSize="12"
MaxLength="25"
KeyDown="OnKeyDownHandler"/>
</StackPanel>
<TextBox Name="InvalidCharacterDetection"
materialDesign:HintAssist.Hint="Invalid character"
Style="{StaticResource MaterialDesignFloatingHintTextBox}"
Margin="10,100,10,40"
FontFamily="Champagne & Limousines"
FontSize="12"
MaxLength="25"
IsReadOnly="True"/>
Below is the C# code of the invalid characters event handler detector :
private void OnKeyDownHandler(object sender, KeyEventArgs e)
{
var regex = new Regex(@"[^a-zA-Z0-9-()/\s\p{IsGreekandCoptic}]");
if (regex.IsMatch(e.Key.ToString()))
{
InvalidCharacterDetection.Text = "You Entered an invalid character";
CreatedSQLDatabase.Foreground = Brushes.Red;
}
else if (String.IsNullOrEmpty(CreatedSQLDatabase.Text))
{
InvalidCharacterDetection.Text = "Database name cannot be empty";
}
else if (CreatedSQLDatabase.Text.Length > 25)
{
InvalidCharacterDetection.Text = "Database name cannot exceed 25 characters";
}
}
The output is not correct (none of the regex expressions is applied):
How could I make the KeyEvent handler to catch the if statements and make the appropriate changes in the color of the textbox1 and the message that is appeared in the textbox2?
Please notify me in the comments if there is any other duplicate question regarding this one. I found the following questions So far :
