C # - Проверка TextBox - PullRequest
       4

C # - Проверка TextBox

7 голосов
/ 20 июня 2011

У меня есть некоторый код, который проверяет и гарантирует, что, когда пользователи вводят в поле, необходимо ввести целое число от 1 до 10.

Хотя, если пользователи фокусируются на поле, «плохие» данные (такие как «fdgfdg») все еще остаются в поле. Таким образом, некоторые могут продемонстрировать, как при потере фокуса на поле, если данные недействительны, вместо них будет введено значение по умолчанию, например, 5

private void textBox4_TextChanged(object sender, EventArgs e)
        {
            try
            {
                int numberEntered = int.Parse(textBox4.Text);
                if (numberEntered < 1 || numberEntered > 10)
                {
                    MessageBox.Show("You must enter a number between 1 and 10");
                }
            }
            catch (FormatException)
            {

                MessageBox.Show("You need to enter an integer");
            }
        }

Ответы [ 4 ]

15 голосов
/ 20 июня 2011

Здесь можно использовать несколько событий, Leave, LostFocus и Validating, здесь более подробно обсуждаются эти различные события на MSDN .

При определенных сценариях Leave и LostFocus не будут срабатывать, поэтому в вашем случае лучше всего использовать событие Validating:

    textBox1.Validating += new CancelEventHandler(textBox1_Validating);


    void textBox1_Validating(object sender, CancelEventArgs e)
    {
        int numberEntered;

        if (int.TryParse(textBox1.Text, out numberEntered))
        {
            if  (numberEntered < 1 || numberEntered > 10) 
            { 
                MessageBox.Show("You have to enter a number between 1 and 10");
                textBox1.Text = 5.ToString();
            }
        }
        else
        {
            MessageBox.Show("You need to enter an integer");
            textBox1.Text = 5.ToString();
        }
    }
0 голосов
/ 20 июня 2011

если вы выполняете ручную проверку, как здесь, все, что вам нужно сделать, это установить значение по умолчанию после вашего MessageBox.Show ()

в стандартных winforms. Я не думаю, что у вас естьфреймворк поддерживает валидацию, но вы можете взглянуть на это: http://msdn.microsoft.com/en-us/library/ms951078.aspx для вдохновения, чтобы не разбрасывать эту логику по всему приложению

0 голосов
/ 20 июня 2011

Используйте событие Leave в элементе управления textbox для проверки и установки значения по умолчанию

0 голосов
/ 20 июня 2011

Посмотрите здесь , и я бы использовал TryParse

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