نمایش نتایج 1 تا 6 از 6

نام تاپیک: چگونه می توان کنترل کرد که در combobox فقط عدد وارد شود ؟

  1. #1

    Question چگونه می توان کنترل کرد که در combobox فقط عدد وارد شود ؟

    سلام دوستان
    می خواستم ببینم چطور می تونیم کنترل کنیم که کاربر توی combobox فقط عدد وارد کنه ؟
    ممنون

  2. #2
    در KeyPress کنترل comboBox کد زیر رو بنویس

    if (e.KeyChar < 48 || e.KeyChar > 57)
    {
    e.KeyChar='\0';
    }
    کد بالا چک می کنه که اگر کاراکتر ورودی در رنج کاراکتر های عددی نباشه ورودی را null کنه
    آخرین ویرایش به وسیله alaaaa : چهارشنبه 15 خرداد 1387 در 21:39 عصر

  3. #3
    می توانید در رویداد KeyPress ، تعیین کنید که چه کاراکترهایی را کاربر می تواند تایپ کند. در زیر می گوییم هر چیزی که عدد و دکمه BackSpace نبود رو فیلتر کن.


    private
    void comboBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
    e.Handled = !
    char.IsDigit(e.KeyChar) && e.KeyChar != (char)Keys.Back;
    }


    روش دوم:
    شما می توانید عمل چک کردن رو در انتها انجام دهید یعنی پس از وارد شدن Text:

    try
    {
    long.Parse(comboBox1.Text);
    }
    catch
    {
    MessageBox.Show("Error");
    }


    اگر در تبدیل رشته به عدد خطایی روی دهد یعنی اینکه نوشته تایپ شده حاوی کاراکتر غیر عددی است.

    ----------------------------------------------------
    کد زیر هم برای رویداد KeyPress یک TextBox نوشته شده که فقط می توان در این تکس باکس، عدد اعشاری صحیح وارد کرد. (+ یا - فقط در ابتدا و یکبار ، علامت دات . فقط یکبار ، حتی اگر شما قسمتی که مثلا + داره رو Select کنید می تونید تغییرش بدید ولی اگر قسمت Select شده حاوی + نباشه و + قبلا وارد شده باشه، دیگر اجازه وارد کردن + جدید ندارید.)
    این هم هدیه ای از من به شما ! با تشکر!


    private
    void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
    e.Handled = !
    char.IsDigit(e.KeyChar) && e.KeyChar != (char)Keys.Back &&
    e.KeyChar !=
    '.' && e.KeyChar != '-' && e.KeyChar != '+';
    // ںگ© کé ê¢ë ں뢦ں 묧ى ی§
    // چیë ںگ© ê¢ë ں뢦ں ¬§ى ں¬§ ںی§ ںیë §ی مéںê¢ پ¨ی©ه¢ى ¬ی§. ھی©ں ê¢ë پںک ¦یںى§ ¬§
    if (textBox1.SelectedText != textBox1.Text)
    {
    if (e.KeyChar == '.')
    {
    try
    {
    // ںی§ ¢یںë پ« ںھ + یں - مéںê¢ ںم¬ں© ©ں یں©§ ک©§
    if (textBox1.Text != "+" && textBox1.Text != "-" && textBox1.Text != "")
    {
    // ںگ© ¦لں ©یی §ى§ یمëی §© ê¢ë یک ں© مéںê¢ ںم¬ں© یں©§ ¬§ى. پ« ë ںی§ §ی ں©ى یں©§ ¬ی§
    long.Parse(textBox1.Text);
    }
    }
    catch
    {
    e.Handled = e.KeyChar ==
    '.';
    }
    }
    elseif (e.KeyChar == '+' || e.KeyChar == '-')
    {
    // ©ںی ک뢩é '+' یں '-' ¢ک©ں©ی §© ں ¢§ںی کں§© ê¢ë
    // ںیë §ی مéںê¢ ¥¢êں ںی§ §© ں ¢§ںی ê¢ë یں©§ ¬ی§
    // ںگ© ç«ê¢ی ںھ ê¢ë ں뢦ں ¬§ى ں¬§ کى ¬ںêé ê£ ¢ یں êëهی ں«¢، ںی§ ںیë §ی مéںê¢ §© ںیë ¥ںé¢ پ¨ی©ه¢ى ¬ی§
    if ((String.Compare(textBox1.Text, 0, "+", 0, 1) == 0 ||
    String.Compare(textBox1.Text, 0, "-", 0, 1) == 0 ||
    textBox1.SelectionStart != 0) &&
    (
    String.Compare(textBox1.SelectedText, 0, "+", 0, 1) != 0 &&
    String.Compare(textBox1.SelectedText, 0, "-", 0, 1) != 0))
    {
    e.Handled = e.KeyChar ==
    '+' || e.KeyChar == '-';
    }
    }
    }
    }

  4. #4
    انگار یکی زودتر جواب داد!!

  5. #5
    کاربر دائمی آواتار piroozman
    تاریخ عضویت
    مهر 1386
    محل زندگی
    تهران
    سن
    49
    پست
    217

    کاربر فقط اعداد را وارد کند

    با سلام خدمت شما
    من در یک پروژه به صورت زیر عمل کرده ام
    ابتدا در یک کلاس دو تابع به شکل زیر ایجاد کرده ام:
    کد:
        //تابع زیر نوع کاراکتر ارسال شده به تاکس باکهاسی مشخص شده توسط شما را تعیین می کند
    public static void determineTypeOfCharacter(object sender,KeyEventArgs e)
    {
    // Initialize the flag to false.
    nonNumberEntered = false;
    // Determine whether the keystroke is a number from the top of the keyboard.
    if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
    {
    // Determine whether the keystroke is a number from the keypad.
    if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9)
    {
    // Determine whether the keystroke is a backspace.
    if (e.KeyCode != Keys.Back)
    {
    if(e.KeyCode!=Keys.Decimal)
    // A non-numerical keystroke was pressed.
    // Set the flag to true and evaluate in KeyPress event.
    nonNumberEntered = true;
    }
    }
    }
    }
    //تابع زیر از ورود کاراکترهای غیر مجاز در داخل تکس باکسهای مورد نظر شما جلوگیری می کند
    public static void preventCharacterEnter(object sender,KeyPressEventArgs e)
    {
    // Check for the flag being set in the KeyDown event.
    if (nonNumberEntered == true)
    {
    // Stop the character from being entered into the control since it is non-numerical.
    e.Handled = true;
    System.Media.SystemSounds.Beep.Play();

    }
    }
    سپس در طول برنامه برای هر یک از کامپوننتهایی که قصد دارید کاربر فقط اعداد را وارد کند باید پارامترهای دو رویداد keydown و keypress را به دو تابع فوق ارسال نمایید. به شکل زیر:
    private void rangeareaTextBox_KeyDown(object sender, KeyEventArgs e)
    {
    Tools.determineTypeOfCharacter(sender, e);
    }
    private void rangeareaTextBox_KeyPress(object sender, KeyPressEventArgs e)
    {
    Tools.preventCharacterEnter(sender, e);
    }


  6. #6
    ممنون از همه شما .
    کارم راه افتاد

تاپیک های مشابه

  1. پیداکردن آیتم تکراری در combobox
    نوشته شده توسط hsadeh در بخش VB.NET
    پاسخ: 2
    آخرین پست: سه شنبه 30 مرداد 1386, 10:27 صبح
  2. سوال در مورد combobox
    نوشته شده توسط newmefmef در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 8
    آخرین پست: دوشنبه 01 مرداد 1386, 22:32 عصر
  3. combobox
    نوشته شده توسط b_ghost2005 در بخش VB.NET
    پاسخ: 4
    آخرین پست: چهارشنبه 27 تیر 1386, 10:31 صبح
  4. واکشی متن مربوط به ComBoBox
    نوشته شده توسط lililili در بخش Access
    پاسخ: 3
    آخرین پست: چهارشنبه 20 تیر 1386, 09:05 صبح
  5. جستجو در combobox
    نوشته شده توسط Batman در بخش ارزیابی نرم افزار
    پاسخ: 3
    آخرین پست: یک شنبه 17 تیر 1386, 12:44 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •