How do I make a textbox that only accepts numbers?

后端 未结 30 2285
梦如初夏
梦如初夏 2020-11-21 06:05

I have a windows forms app with a textbox control that I want to only accept integer values. In the past I\'ve done this kind of validation by overloading the KeyPress event

30条回答
  •  礼貌的吻别
    2020-11-21 06:48

    3 solution

    1)

    //Add to the textbox's KeyPress event
    //using Regex for number only textBox
    
    private void txtBox_KeyPress(object sender, KeyPressEventArgs e)
    {
    if (!System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), "\\d+"))
    e.Handled = true;
    }
    

    2) an another solution from msdn

    // Boolean flag used to determine when a character other than a number is entered.
    private bool nonNumberEntered = false;
    // Handle the KeyDown event to determine the type of character entered into the     control.
    private void textBox1_KeyDown(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)
            {
                // A non-numerical keystroke was pressed.
                // Set the flag to true and evaluate in KeyPress event.
                nonNumberEntered = true;
            }
        }
    }
    

    }

    private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (nonNumberEntered == true)
        {
           MessageBox.Show("Please enter number only..."); 
           e.Handled = true;
        }
    }
    

    source http://msdn.microsoft.com/en-us/library/system.windows.forms.control.keypress(v=VS.90).aspx

    3) using the MaskedTextBox: http://msdn.microsoft.com/en-us/library/system.windows.forms.maskedtextbox.aspx

提交回复
热议问题