С# Только числовой элемент управления TextBox

Я использую С#.NET 3.5, и у меня есть проблема в моем проекте. В приложении С# Windows я хочу, чтобы textbox принимал только числа. Если пользователь пытается ввести символы, сообщение должно появляться как "пожалуйста, введите только цифры", а в другом текстовом поле оно должно принять достоверное сообщение email id, если оно недействительно. Он должен показывать неверный идентификатор пользователя.

Ответ 2

Из С# 3.5 Предполагаю, что вы используете WPF.

Просто сделайте двустороннюю привязку данных из свойства integer в текстовое поле. WPF автоматически покажет ошибку проверки.

В случае с электронной почтой сделайте двустороннюю привязку данных из свойства string, которое проверит проверку Regexp в установщике и выбросит исключение после ошибки проверки.

Посмотрите ссылку на MSDN.

Ответ 3

используйте этот код:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            const char Delete = (char)8;
            e.Handled = !Char.IsDigit(e.KeyChar) && e.KeyChar != Delete;
        }

Ответ 4

Вы можете попробовать int.TryParse(string, out int) в событии KeyPress(object, KeyPressEventArgs), чтобы проверить числовые значения. Для другой проблемы вы можете использовать регулярные выражения.

Ответ 5

Я использовал TryParse, который упоминал @fjdumont, но в проверяющем событии.

private void Number_Validating(object sender, CancelEventArgs e) {
    int val;
    TextBox tb = sender as TextBox;
    if (!int.TryParse(tb.Text, out val)) {
        MessageBox.Show(tb.Tag +  " must be numeric.");
        tb.Undo();
        e.Cancel = true;
    }
}

Я привязал это к двум различным текстовым полям в моей инициализации кода.

    public Form1() {
        InitializeComponent();
        textBox1.Validating+=new CancelEventHandler(Number_Validating);
        textBox2.Validating+=new CancelEventHandler(Number_Validating);
    }

Я также добавил tb.Undo() для отмены неверных изменений.

Ответ 6

этот путь прав со мной:

private void textboxNumberic_KeyPress(object sender, KeyPressEventArgs e)
{
     const char Delete = (char)8;
     e.Handled = !Char.IsDigit(e.KeyChar) && e.KeyChar != Delete;
}

Ответ 7

Вы можете проверить значение Ascii по e.keychar в событии KeyPress в TextBox.

Проверяя значение AscII, вы можете проверить число или символ.

Аналогичным образом вы можете написать логику, чтобы проверить идентификатор электронной почты.

Ответ 8

ПОПРОБУЙТЕ ДАННЫЙ КОД

// 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;
    }
}


Источник http://msdn.microsoft.com/en-us/library/system.windows.forms.control.keypress(v=VS.90).aspx

Ответ 9

Я думаю, это поможет вам

<script type="text/javascript">
function isNumberKey(evt) {
    var charCode = (evt.which) ? evt.which : event.keyCode
    if (charCode > 32 && (charCode < 48 || charCode > 57) && (charCode != 45) && (charCode != 43) && (charCode != 40) && (charCode != 41))
        return false;

    return true;
}

Ответ 10

try
{
    int temp=Convert.ToInt32(TextBox1.Text);
}
catch(Exception h)
{
    MessageBox.Show("Please provide number only");
}