Abhijeet pratap singh Ответов: 7

как проверить текстовое поле, содержащее только числовые значения


я хочу проверить свое текстовое поле, которое содержит только числовые значения и ничего больше в приложении c# windows form

BillWoodruff

В вопросе, подобном этому, важны детали: хотите ли вы разрешить использование знака минус, десятичной точки ?

7 Ответов

Рейтинг:
2

Hem Raj Thakur

private void amounttext_KeyDown(object sender, KeyEventArgs e)
 {
     try
     {
         string name = this.Text.ToString();
         if ((e.KeyValue >= 48 && e.KeyValue <= 57)|| e.KeyValue == 17 || e.KeyValue == 46 || e.KeyValue == 45 || e.KeyValue == 18 || e.KeyValue == 91 || e.KeyValue == 32 || e.KeyValue == 93 || e.KeyValue == 16 || e.KeyValue == 13 || e.KeyValue == 8 || e.KeyValue == 33 || e.KeyValue == 34 || e.KeyValue == 35 || e.KeyValue == 36 || e.KeyValue == 37 || e.KeyValue == 38 || e.KeyValue == 39 || e.KeyValue == 40 || e.KeyValue == 192 || e.KeyValue == 27 || e.KeyValue == 144 || e.KeyValue == 96 || e.KeyValue == 97 || e.KeyValue == 98 || e.KeyValue == 99 || e.KeyValue == 100 || e.KeyValue == 101 || e.KeyValue == 102 || e.KeyValue == 103 || e.KeyValue == 104 || e.KeyValue == 105 || e.KeyValue == 106 || e.KeyValue == 107 || e.KeyValue == 108 || e.KeyValue == 109 || e.KeyValue == 110 || e.KeyValue == 111 || e.KeyValue == 112 || e.KeyValue == 113 || e.KeyValue == 114 || e.KeyValue == 115 || e.KeyValue == 116 || e.KeyValue == 117 || e.KeyValue == 118 || e.KeyValue == 119 || e.KeyValue == 120 || e.KeyValue == 121 || e.KeyValue == 122 || e.KeyValue == 123 || e.KeyValue == 145 || e.KeyValue == 19|| e.KeyValue == 20)
         {

         }
         else
         {
             MessageBox.Show("Only numeric value is allowed !", "" + name.ToString() + "", MessageBoxButtons.OK, MessageBoxIcon.Warning);


             string varlenth = "";
             varlenth = amounttext.Text.Substring(0, amounttext.Text.Length - 1);
             amounttext.Text = varlenth;
             amounttext.Select(amounttext.Text.Length, 0);
         }
     }
     catch { }
 }


CHill60

Вы, вероятно, получите много отрицательных отзывов за это, так что будет только справедливо, если я сообщу вам о некоторых вещах, которые с этим не так...
1. Это основополагающий принцип. Вы смешали и и или вместе без использования скобок... чего бы вы ожидали в результате if (e.KeyValue >= 48 && e.KeyValue <= 57 || e.KeyValue == 17) быть? Лучше бы было if ( (e.KeyValue >= 48 && e.KeyValue <= 57) || e.KeyValue == 17)
2. Ключевые значения с 97 по 122 - это строчные буквы ... то есть не числовые. Там также есть несколько других нечисловых символов. См. решение 2-.NET предоставляет функции для определения того, является ли символ цифрой
3. у вас есть опечатки ... e. KeyValue = = 22 вместо e. KeyValue = 122-всегда проверяйте свои решения (или скажите оператору, что у вас их нет)

Hem Raj Thakur

спасибо, сэр, что исправили мою ошибку. но другой код выполняется успешно.

Рейтинг:
1

Gitanjali Singh

Попробуй вот так

public Form1()
{
    InitializeComponent();
    txtHomePhone.KeyPress += new KeyPressEventHandler(txtHomePhone_KeyPress);
}
private void txtHomePhone_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar >= '0' && e.KeyChar <= '9' || e.KeyChar == '') //The  character represents a backspace
    {
        e.Handled = false; //Do not reject the input
    }
    else
    {
        e.Handled = true; //Reject the input
    }
}


Ссылаться:
проверка-содержит ли-текстовое поле-только-числа[^]
форумчане-а-текстовое поле, чтобы разрешить только числовые значения[^]


Рейтинг:
1

Sampath Lokuge

Пожалуйста, попробуйте, как показано ниже.

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (!char.IsControl(e.KeyChar)
        && !char.IsDigit(e.KeyChar)
        && e.KeyChar != '.')
    {
        e.Handled = true;
    }

    // only allow one decimal point
    if (e.KeyChar == '.'
        && (sender as TextBox).Text.IndexOf('.') > -1)
    {
        e.Handled = true;
    }
}



Для дополнительной информации : Как сделать текстовое поле, которое принимает только цифры


Рейтинг:
1

Shameel

Вы можете писать код двумя способами:

1. В текстовом поле по KeyPress событие, нажмите на KeyChar и, если он не находится в пределах диапазона для numebers, установите KeyChar в 0.

2. В текстовом поле по Validate событие, проверьте содержимое с помощью int.TryParse или double.TryParse в этом случае может быть и предупреждение пользователя.

Выполнение обоих вышеперечисленных действий гарантирует, что ваше текстовое поле содержит только цифры.


Рейтинг:
1

agent_kruger

извините, если это совпадает с другими ответами, но это совсем другое

public static void IsNumberic(KeyPressEventArgs e, System.Windows.Forms.TextBox Tb)
{
    if (char.IsDigit(e.KeyChar) || char.IsControl(e.KeyChar))
    {
        e.Handled = false;
    }
    else
    {
        e.Handled = true;
    }
}


Рейтинг:
1

Member 12967179

private void TextboxName_KeyPress(отправитель объекта, KeyPressEventArgs e)
{
если (! char.IsDigit(электронная.Ключевой-символ) и усилитель; & электронная.Ключевой-символ != (ключи типа char).Обратно)
е.Обработано = истина;
}

Для цифр и обратного пространства только в c#


Richard MacCutchan

Пожалуйста, не воскрешайте старые вопросы. Этому три года.

Рейтинг:
0

ridoy

Ну что ж я хотел бы вам сказать смотрите эту статью здесь на CP:
Проверьте, Является Ли Строковое Значение Числовым[^]
И для использования его при использовании кнопки click вы можете увидеть это:
Проверить текстовое поле числовое на ButtonClick в C#[^]