Проблема с ограничениями ввода TextBox - PullRequest
0 голосов
/ 21 сентября 2011

У меня есть ограничения ввода для текстового поля, что он будет принимать только int и до тех пор, пока он не будет проанализирован Int64. Вопрос в том, что он очищается, потому что он присваивает String.Empty, но что, если Int64 не разбирает его, тогда я хочу отменить это нажатие клавиши. Я попытался добавить код к событию keydown, которое у меня есть, но оно также подавит клавиши Int.

public static void SetInt64Input(Control tb)
    {
       tb.KeyDown += (sender, e) => {
        if (!IsIntKeyOrAlwaysAcceptableKey(e))
       //if not int key suppress it; Ex: A,B,.etc
            e.SuppressKeyPress = true;
       };
       tb.TextChanged += (s, e) => ClearAllNonInt64Inputs(tb);

    }

    private static void ClearAllNonInt64Inputs(Control tb)
    {
        long i;
        if (!Int64.TryParse(tb.Text, out i))
            tb.Text = String.Empty;
        else
            tb.Text =  Int64.Parse(tb.Text).ToString();
    }

я пытался сделать

 if(!Int64.TryParse(((TextBox)sender).Text,out junk)
    e.SuppressKeyPress = true;

но это не работает.

1 Ответ

0 голосов
/ 22 сентября 2011

Я не уверен, в чем вопрос. Извините. Но если ввод не разбирается из-за его длины Int64 (более 4 байтов), то я думаю, что может помочь ограничение количества символов в текстовом поле. И если его невозможно разобрать из-за нецелого значения, то использование функции IsNotDigit будет полезным в случае нажатия клавиши.

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