Chia sẻ

Trên WPF thực hiện validation thật đơn giản, các bạn hãy thực hiện theo các bước như sau để kiểm tra nội dung nhập vào Textbox có phải là số hay chữ nhé, nếu không phải là số thì sẽ hiển thị thông báo bằng việc tô khung Textbox thành màu đỏ.

Nội dung

Bước 1. Thêm mã sau vào tệp C#

public void ValidateTextboxTelephone(TextBox ctrltxt)
        {
            string errormessage = "Định dạng số điện thoại không đúng (vd: 0345346000)";
            BindingExpression expression = ctrltxt.GetBindingExpression(TextBox.TextProperty);
            expression.UpdateSource();
            Regex regex = new Regex("[^0-9]+");
            if (regex.IsMatch(ctrltxt.Text) == true) // check validation condition or reg expression here  
            {
                ValidationError error = new ValidationError(new ExceptionValidationRule(), expression, errormessage, null);
                Validation.MarkInvalid(expression, error);
            }
            else
            {
                Validation.ClearInvalid(expression);
            }
        }
private void txtManhanvien_LostFocus(object sender, RoutedEventArgs e)
        {
            ValidateTextboxTelephone(txtManhanvien);
        }

 

Bước 2. Thêm mã sau vào tệp App.xaml

        <ControlTemplate x:Key="InputErrorTemplate">
            <DockPanel>
                <Border Name="validationBorder" BorderBrush="Red" BorderThickness="2">
                    <Border.Resources>
                        <Storyboard x:Key="_blink">
                            <ColorAnimationUsingKeyFrames AutoReverse="True" BeginTime="00:00:00" Storyboard.TargetName="validationBorder" Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" RepeatBehavior="00:00:02">
                                <SplineColorKeyFrame KeyTime="00:00:00.5" Value="#00FF0000"/>
                            </ColorAnimationUsingKeyFrames>
                        </Storyboard>
                    </Border.Resources>
                    <Border.Triggers>
                        <EventTrigger RoutedEvent="FrameworkElement.Loaded">
                            <BeginStoryboard Storyboard="{StaticResource _blink}" />
                        </EventTrigger>
                    </Border.Triggers>
                    <AdornedElementPlaceholder/>
                </Border>
            </DockPanel>
        </ControlTemplate>

Đối với đoạn mã trên là đối với Usercontrol, nếu là cửa sổ Window thì thay chữ UserControl thành Window.

Bước 3. Đối với Textbox ta thay thế bằng đoạn mã sau

<TextBox Name="txtManhanvien" Width="200" LostFocus="txtManhanvien_LostFocus"
                            Text="{Binding Path=DisplayData, 
                                ValidatesOnDataErrors=True,
                                NotifyOnValidationError=True, 
                                UpdateSourceTrigger=LostFocus, 
                                ValidatesOnExceptions=True}"
                                Validation.ErrorTemplate="{StaticResource InputErrorTemplate}"  >
                            </TextBox>

Bước 4. Kết quả hiển thị như sau

Nếu hiện thị số thì không báo lỗi
Nếu hiện thị số thì không báo lỗi
Báo lỗi nếu không hiển thị số
Báo lỗi nếu không hiển thị số

Chúc các bạn thành công !

ĐĂNG KÝ MUA HÀNG

    Email (*)

    Điện thoại (*)

    Tên sản phẩm/Dịch vụ:


    Chia sẻ
    Xem thêm  [C#] Hướng dẫn định dạng tiền tệ trong textbox

    Trả lời

    Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *