ساخت TextBox تنها با قابلیت وارد کردن عدد در سی شارپ

در این آمزوش، TextBox ای خواهیم ساخت که بتوان در آن عدد، عدد اعشار و عدد منفی وارد کرد.
البته هرکدام را که نخواستید میتوانید از کد حذف کنید.

مراحل انجام کار

  • رویداد KeyPress را برای TextBox مورد نظر ایجاد کنید.
  • کد زیر را در آن قرار دهید.
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            // متن
            string text = ((Control) sender).Text;

            // عدد منفی
            if (e.KeyChar == '-' && text.Length == 0)
            {
                e.Handled = false;
                return;
            }

            // عدد اعشاری
            if (e.KeyChar == '.' && text.Length > 0 && !text.Contains("."))
            {
                e.Handled = false;
                return;
            }

            // عدد
            e.Handled = (!char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar));
        }

توضیح کد بالا:

  • در ابتدا، با توجه به این که sender می‌تواند هرچیزی باشد، آن را به Control تبدیل می‌کنیم و متن را از آن بیرون می‌کشیم.
  • اگر بخواهیم کاربر بتواند عدد منفی بنویسید:
    • بررسی می‌کنیم که آیا کاراکتر وارد شده، علامت منفی است یا نه.
    • بررسی می‌کنیم که هیچ چیزی قبلا نوشته نشده است؛ چرا که علامت منفی باید تنها در ابتدای عدد قرار بگیرد.
  • اگر بخواهید کاربر بتواند عدد اعشاری بنویسید:
    • بررسی می کنیم که آیا علامت وارد شده، علامت اعشار است یا نه.
    • علامت عدد اعشار در ابتدای جمله نمیتواند باشد، البته شاید در تبدیل به Float درست کار کند ولی ما بررسی می‌کنیم که در ابتدای جمله وارد نشود.
    • بررسی می کنیم که آیا قبلا در این متن علامت نقطه (اعشار) وجود دارد یا خیر.
  • و در نهایت باید بررسی کنید که آیا کاراکتر وارد شده عدد است یا نه.
    این قسمت حتما باید در انتها بررسی شود.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد.

cp-codfk

نظرات ثبت شده بدون دیدگاه

توضیحات پیشنهادی نظرات اشتراک