Как получить доступ к тексту элемента управления NumericUpDown до его проверки? - PullRequest
3 голосов
/ 17 декабря 2011

У меня есть форма с элементом управления System.Windows.Forms.NumericUpDown.

Скажите, что диапазон составляет от 0 до 100, а текущее значение (полученное с помощью счетчика) равно 100. Я могу ввести число, которое находится за пределами допустимого диапазона (скажем, 567), но когда я нажимаю ОК форма для сброса значения, просто устанавливает значение вне диапазона 100 и закрывает форму.

Клиент хочет получить явное сообщение о том, что номер выходит за пределы допустимого диапазона. Итак, я посмотрел на проверку свойства NumericUpDown.Text на закрытии формы, но это свойство возвращает мне «100», а не «567».

Где (или как) я могу "поймать" тот факт, что текст, отображаемый в элементе управления, является "567"?

Ответы [ 2 ]

7 голосов
/ 17 декабря 2011

Вы можете использовать ответ из этого вопроса , чтобы зафиксировать недопустимое значение, получив ссылку на TextBox внутри NumericUpDown и обработав его событие Validating. В вашем обработчике свойство TextBox.Text будет иметь недопустимое значение для проверки. У меня работает в .NET 2.0 Winforms.

2 голосов
/ 17 декабря 2011

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

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            int val = Convert.ToInt32(((UpDownBase)numericUpDown1).Text);

            if (val > 100)
            {
                MessageBox.Show("The value " + ((UpDownBase)numericUpDown1).Text + 
                " is out of range", "Validation Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

                e.Cancel = true;
            }
        }
...