دسته بندی ها
14:24 1399/09/20

محدود کردن ورود مقادیر در TextBox سی شارپ

مشخصات سوال کننده :
کاربر : mojtabahakimian     امتیاز کاربر : 155     رتبه کاربر : 10
دسته بندی : WPF سی شارپ

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 3942
2 نظر
mojtabahakimian : متاسفانه هیچکدوم از روش هایی که میشه توی ویندوز فرم استفاده کرد توی WPF کار نمیکنه

امتیاز کاربر : 155   رتبه کاربر : 10   تاریخ ثبت : 02:26 1399/09/20
mojtabahakimian : فقط یک نکته رو در نظر داشته باشید این Regex جلوی Copy/Paste رو نمیگیره

امتیاز کاربر : 155   رتبه کاربر : 10   تاریخ ثبت : 02:50 1399/09/20
پاسخ دهنده : Alireza 20:52 1399/09/21

سلام 

اول از همه این کد رو توی PreviewTextInput تکست باکستون بنویسید:

private void MyTextbox2_PreviewTextInput(object sender, TextCompositionEventArgs e)
        {
            //عبارت باقاعده
            Regex regex = new Regex("[^0-9]");
            e.Handled = regex.IsMatch(e.Text);
        }

در مرحله بعد قبل از Window_Loaded این کد رو بنویس:

private void Foo(object sender, ExecutedRoutedEventArgs e)
        {
            e.Handled = true;
        }

در آخر هم توی Window_Loaded این کد رو بنویس:

MyTextbox2.CommandBindings.Add(new CommandBinding(ApplicationCommands.Paste, Foo));

این کار باعث پیست نشدن در تکست باکس میشه.

 

این کد رو هم در PreviewKeyDown تکست باکستون بنویسید تا از دکمه Space جلوگیری کنه که به مشکل برنخوری:

private void MyTextbox2_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Space)
                e.Handled = true;
        }

تمام.

(بکوبین لایکو)

ویرایش شده در جمعه 21 آذر 1399 ساعت 20:57:20
به این پاسخ امتیاز بدهید    2
امتیاز: 115 رتبه: 13
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود