محدود کردن ورود مقادیر در TextBox سی شارپ
من از WPF سی شارپ استفاده میکنم
یک تکست باکس عددی دارم میخوام فقط اعدا وارد اون بشه نه چیزه دیگه ای
این کار رو توی ورودی تکست باکس انجام دادم , ولی وقتی کاربر میاد یه چیزی از Clipboard توی تکست باکس Paste میکنه
نرم افزار کرش میکنه
private void MyTextbox2_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
e.Handled = new Regex("[^0-9]+").IsMatch(MyTextbox2.Text);
}
توی ویندوز فرم میشد با TextBoxMask جلوی این کار ها رو گرفت اما توی WPF نمی دونم چجوری عمل میکنه
حالا برای حل این مشکل که : از ورود اطلاعتی که متفاوت با اون چیزی که ما میخوایم باشه جلوگیری کنیم , یا به عبارت دیگه :
نحوه استفاده از TextBoxMask در WPF سی شارپ
پاسخ هوش مصنوعی
برای محدود کردن ورودی تکست باکس در WPF و جلوگیری از کرش کردن نرم افزار هنگام چسباندن (Paste) محتوا از کلیپ بورد، می توانید از رویداد `PreviewTextInput` و همچنین رویداد `Paste` استفاده کنید. در زیر مثالی از یک تکست باکس که فقط اجازه ی ورود اعداد را می دهد، آورده شده است:
using System.Text.RegularExpressions;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
namespace YourNamespace
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void MyTextbox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
e.Handled = !IsTextAllowed(e.Text);
}
private void MyTextbox_Paste(object sender, DataObjectPastingEventArgs e)
{
if (e.DataObject.GetDataPresent(DataFormats.Text))
{
string pasteData = (string)e.DataObject.GetData(DataFormats.Text);
if (!IsTextAllowed(pasteData))
{
e.CancelCommand(); // Prevent paste if data is not allowed
}
}
else
{
e.CancelCommand(); // Prevent paste if data format is not text
}
}
private bool IsTextAllowed(string text)
{
Regex regex = new Regex("^[0-9]*$"); // Only allow digits
return regex.IsMatch(text);
}
}
}
و برای ارتباط این کد با XAML:
<TextBox Name="MyTextbox"
PreviewTextInput="MyTextbox_PreviewTextInput"
DataObject.Pasting="MyTextbox_Paste" />
با این روش، هم از ورود غیرمجاز به داخل تکست باکس جلوگیری می شود و هم از کرش کردن نرم افزار هنگام چسباندن متن از کلیپ بورد جلوگیری خواهید کرد.
سلام
اول از همه این کد رو توی 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;
}
تمام.
(بکوبین لایکو)
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- مشکل تاریخ شمسی در سی شارپ
- نمایش گزارش stimulsoft روی کلاینت
- تفاوت های سی شارپ 8 با نسخه های قبلی چیه؟
- انتخاب چند سطر دلخواه توسط چک باکس در DataGrid و محاسبه جمع سطرهای انتخاب شده
- نمایش نوتیفکیشن در سی شارپ
- ارسال پارامتر از سی شارپ به استیمول سافت
- عدم نمایش عکس در دیتاگرید ویو در wpf
- Library Animation برای کنترلهای WPF
- مشکل در تغییر مقدار Text کنترل RibbonBar در کامپوننت DevExpress
- قرار دادن مقادیر ارسالی یک ستون از جدول به صورت سطری در استیمول