ساخت 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

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

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