Как сделать текстовое поле, которое позволяет только целочисленное значение? - PullRequest
3 голосов
/ 08 марта 2011

Я хочу создать текстовое поле в моем приложении wpf, которое будет принимать только целые значения.если кто-то печатает символы между [az], текстовое поле отклонит его.Таким образом, он не будет отображаться в текстовом поле

Ответы [ 5 ]

7 голосов
/ 08 марта 2011

Вы можете обработать событие PreviewTextInput:

private void TextBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
  // Filter out non-digit text input
  foreach (char c in e.Text) 
    if (!Char.IsDigit(c)) 
    {
      e.Handled = true;
      break;
    }
}
1 голос
/ 08 марта 2011

Привязать его к свойству Integer. WPF выполнит саму проверку без лишних хлопот.

1 голос
/ 08 марта 2011

В WPF вы можете обработать событие KeyDown следующим образом:

private void MyTextBox_KeyDown(object sender, KeyDownEventArgs e)
{
    e.Handled = true;
}
1 голос
/ 08 марта 2011

этот простой фрагмент кода должен помочь. Вы также можете проверить наличие переполнений (слишком большое число)

private void IntegerTextBox_TextChanged(object sender, EventArgs e)
{
    for (int i = 0; i < Text.Length; i++)
    {
        int c = Text[i];
        if (c < '0' || c > '9')
        {
           Text = Text.Remove(i, 1);
         }
    }
}
1 голос
/ 08 марта 2011

Вы можете добавить дескриптор события TextChanged и посмотреть, что было введено (необходимо каждый раз проверять весь текст для предотвращения вставки букв из буфера обмена).

Также посмотрите очень хороший пример создания маскируемого поля ввода CodeProject .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...