Обработка событий изменения значения NumericUpDown в C#
Сообщение
Когда пользователь нажимает на стрелки элемента NumericUpDown или нажимает клавишу со стрелкой вверх или вниз, когда элемент управления имеет фокус, элемент управления вызывает событие ValueChanged, чтобы программа могла знать что его значение изменилось. К сожалению, это событие не срабатывает, если пользователь вводит число в элемент управления.
Чтобы обнаружить числа, введенные в элемент управления, программа может поймать событие KeyUp элемента управления. В этом примере используется следующий код, чтобы поймать события ValueChanged и KeyUp.
// Происходит, когда пользователь нажимает стрелку. private void nudScale_ValueChanged(object sender, EventArgs e) { Refresh(); } // Происходит, когда пользователь нажимает клавишу. private void nudScale_KeyUp(object sender, KeyEventArgs e) { Refresh(); }
Когда программа ловит эти события, она использует метод Refresh формы, чтобы выполнить обработчик события Paint.
// Нарисуем эллипс. private void Form1_Paint(object sender, PaintEventArgs e) { e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; // Получить размер эллипса как доли // ширины и высоты формы. float width = (float)(ClientSize.Width * nudScale.Value); float height = (float)(ClientSize.Height * nudScale.Value); // Рисуем эллипс. float x = (ClientSize.Width - width) / 2; float y = (ClientSize.Height - height) / 2; e.Graphics.DrawEllipse(Pens.Red, x, y, width, height); }
Этот код рисует эллипс с радиусом, определяемым значением в элементе управления nudScale NumericUpDown.
Обратите внимание, что элемент управления NumericUpDown не позволит пользователю ввести недопустимое значение. Если пользователь нажимает нечисловую клавишу, такую как A или $, элемент управления игнорирует ее.