دسته بندی ها
12:39 1398/07/27

مشخص کردن حداقل تعداد کاراکتر در تکست باکس wpf

مشخصات سوال کننده :
کاربر : Parsa_Hassani     امتیاز کاربر : 18     رتبه کاربر : 40
دسته بندی : سی شارپ

به این سوال امتیاز بدهید    2
تعداد بازدید این سوال : 5349
هوش مصنوعی

پاسخ هوش مصنوعی

برای محدود کردن تعداد حداقل کاراکترها در یک تکست باکس در WPF، شما می توانید از رویداد PreviewTextInput استفاده کنید تا بررسی کنید که آیا کاراکترهای وارد شده به حداقل تعداد کاراکترها (در اینجا 10 کاراکتر) می رسد یا خیر.

در زیر یک راه حل ساده برای انجام این کار آمده است:

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 TextBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
        {
            TextBox textBox = sender as TextBox;
            string newText = textBox.Text.Insert(textBox.SelectionStart, e.Text);

            // بررسی طول رشته بعد از اضافه کردن کاراکتر جدید
            if (newText.Length > 10 || newText.Length < 10 && !string.IsNullOrEmpty(e.Text))
            {
                e.Handled = true; // جلوگیری از ورود کاراکتر
            }
        }
    }
}

در XAML، می توانید این رویداد را به تکست باکس خود اضافه کنید:

<TextBox Name="PersonnelCodeTextBox" MaxLength="10" PreviewTextInput="TextBox_PreviewTextInput"/>

با این راه حل، کاربر نمی تواند کمتر از 10 کاراکتر وارد کند و حداکثر 10 کاراکتر را می تواند وارد نماید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : Sowgandi 23:24 1398/07/26

سلام. دوست عزیز خاصیت MinLenth در تکست باکس وجود نداره! برای این کار باید از کد نویسی استفاده کنید. در رویداد LostFocus تکست باکس باید چک کنید که اگر تعداد کاراکترهای تکست باکس شما کمتر از 10 رقم بود سیستم به کاربر دهد. 

<TextBox LostFocus="MyTextBox_LostFocus" />
private void MyTextBox_LostFocus(object sender, RoutedEventArgs e)
{
    if (((TextBox)sender).Text.Length < 10)
    {
        MessageBox.Show("کد پرسنلی باید 10 رقمی باشد");
        e.Handled = true;
    }
}

البته برای محکم کاری میتوانید این کد را در رویداد ذخیره فرم بنویسید. در این صورت در پشت دکمه ذخیره کد زیر رو بنویسید.

private void SaveForm (object sender, RoutedEventArgs e)
{
    if (MyTextBox.Text.Length < 10)
    {
        MessageBox.Show("کد پرسنلی باید 10 رقمی باشد");
        return;
    }
}

 

به این پاسخ امتیاز بدهید    6
امتیاز: 876 رتبه: 3
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود