Как установить диапазон значение для numericupdown
Перейти к содержимому

Как установить диапазон значение для numericupdown

  • автор:

Проверить и обновить значение у NumericUpDown после каждого введенного с клавиатуры символа

Пользователь вводит число в NumericUpDown с клавиатуры, но проверка этого числа на соответствие нижней и верхней границам происходит только после смены фокуса с numeric’а. Как я могу совершать эту встроенную проверку после каждого введенного символа? Я хотел бы написать что-то вроде:

private void numericUpDown1_KeyPress(object sender, KeyPressEventArgs e)

Но метод ValidateEditText() защищенный, а не публичный.
Отслеживать
задан 18 июл 2020 в 16:06
1,899 1 1 золотой знак 7 7 серебряных знаков 21 21 бронзовый знак

Откажитесь от таких проверок. Они только мешают пользователю. Во когда фокус меняется, тогда и нужно проверять итоговое значение.

18 июл 2020 в 17:33
Юзер может вставить значение с помощью мышки. Упс, ваш метод обойдён.
18 июл 2020 в 17:34

А почему они могут помешать? В моем конкретном случае ограничение на максимальное значение всего 20, и если пользователь начинает вводить миллионы, то мне хотелось бы, чтобы он сразу увидел, что максимальное значение он никак не превысит.

18 июл 2020 в 17:35

Потому что распространённый и привычный способ работы — это когда юзер копирует значение откуда-то, захватывая при этом лишние символы и вставляет грязное значение в поле ввода. Потом по месту удаляет лишнее. А если вы и вставки ему ограничите и прочие драконовские меры предпримите, то кому это понравится?

18 июл 2020 в 17:37
Но если вам очень хочется, то используйте событие TextChanged .
18 июл 2020 в 17:39

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

У NumericUpDown есть метод Validate, его и надо вызывать.

Так как пользователь может изменять значения не только с клавиатуры, но и с помощью мышки, то лучше обрабатывать событие TextChanged . Кстати, в дизайнере оно скрыто у этого контрола. Поэтому сделаем это вручную, например, в событии Load формы.

numericUpDown1.TextChanged += NumericUpDown1_TextChanged; 

Код в обработчике события:

private void NumericUpDown1_TextChanged(object sender, EventArgs e) < if (numericUpDown1.Value < numericUpDown1.Minimum || numericUpDown1.Value >numericUpDown1.Maximum) numericUpDown1.Validate(); > 

Общие сведения об элементе управления NumericUpDown (Windows Forms)

Элемент управления NumericUpDown выглядит как сочетание текстового поля и пары кнопок со стрелками для корректировки значения пользователем. Он выводит и задает отдельное числовое значение из списка фиксированных числовых значений. Пользователь может увеличить и уменьшить число путем нажатия кнопок со стрелками, клавиш со стрелками ВВЕРХ и ВНИЗ или путем ввода числа в текстовое поле, являющееся частью элемента управления. Нажатие клавиши со стрелкой ВВЕРХ увеличивает число до максимума; нажатие клавиши со стрелкой ВНИЗ уменьшает число до минимума.

Благодаря своей универсальной функциональности, этот элемент управления является очевидным выбором, например, если вы хотите создать регулятор громкости для приложения музыкального проигрывателя. Элемент управления NumericUpDown используется во многих приложениях панели управления Windows.

Ключевые свойства и методы

Числа, отображаемые в текстовом поле элемента управления, могут быть указаны в различных форматах, включая шестнадцатеричный. Дополнительные сведения см. в статье Практическое руководство. Определение формата элемента управления NumericUpDown в Windows Forms. Ключевые свойства элемента управления: Value, Maximum (значение по умолчанию — 100), Minimum (значение по умолчанию — 0) и Increment (значение по умолчанию — 1). Свойство Value задает текущее число, выбранное в элементе управления. Свойство Increment задает величину, на которую изменяется число, когда пользователь нажимает стрелку вверх или вниз. При смещении фокуса с элемента управления все типизированные входные данные будут проверяться на соответствие минимальным и максимальным числовым значениям. С помощью свойства Accelerations можно увеличить скорость перемещения элемента управления по числам, когда пользователь непрерывно нажимает стрелку вверх или вниз. Основными методами элемента управления являются UpButton и DownButton.

См. также

  • NumericUpDown
  • Элемент управления NumericUpDown
  • Практическое руководство. Определение формата элемента управления NumericUpDown в Windows Forms
  • Элемент управления TextBox

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

Как установить диапазон значение для numericupdown

Элемент NumericUpDown представляет пользователю выбор числа из определенного диапазона. Для определения диапазона чисел для выбора NumericUpDown имеет два свойства: Minimum (задает минимальное число) и Maximum (задает максимальное число).

Само значение элемента хранится в свойстве Value :

NumericUpDown в Windows Forms

По умолчанию элемент отображает десятичные числа. Однако если мы установим его свойство Hexadecimal равным true , то элемент будет отображать все числа в шестнадцатеричной системе.

Шестнадцатиричные числа в NumericUpDown

Даже если мы в коде установим обычное десятичное значение:

numericUpDown1.Value = 66;

то элемент все равно отобразит его в шестнадцатиричной системе.

Если мы хотим отображать в поле дробные числа, то можно использовать свойство DecimalPlaces , которое указывает, сколько знаков после запятой должно отображаться. По умолчанию это свойство равно нулю.

Также можно задать отображение тысячного разделителя. Для этого для свойства ThousandsSeparator надо установить значение true . Например, numericUpDown при Value=1000,03 , DecimalPlaces=2 и ThousandsSeparator=true :

При этом надо учитывать, что если мы устанавливаем значение для свойства Value в окне свойств, то там в качестве разделителя цеой и дробной части используется запятая. Если же мы устанавливаем данное свойство в коде, тогда в качестве разделителя используется точка.

По умолчанию при нажатии на стрелочки вверх-вниз на элементе значение будет увеличиваться, либо уменьшаться на единицу. Но с помощью свойства Increment можно задать другой шаг приращения, в том числе и дробный.

При работе с NumericUpDown следует учитывать, что его свойство Value (как и свойства Minimum и Maximum ) хранит значение decimal. Поэтому в коде мы также должны с ним работать как с decimal, а не как с типом int или double.

DomainUpDown

Элемент DomainUpDown предназначен для ввода текстовой информации. Он имеет текстовое поле для ввода строки и две стрелки для перемещения по списку строк:

Элемент DomainUpDown в Windows Forms

Список для DomainUpDown задается с помощью свойства Items . Список можно сразу упорядочить по алфавиту. Для этого надо свойству Sorted присвоить значение true .

Чтобы можно было циклично перемещаться по списку, то есть при достижении конца или начала списка его просмотр начинался с первого или последнего элемента, надо установить для свойства Wrap значение true .

В коде выбранное значение в DomainUpDown доступно через свойство Text. Например, добавим программно список строк в DomainUpDown и обработаем изменение выбора в списке:

public partial class Form1 : Form < public Form1() < InitializeComponent(); Liststates = new List < "Аргентина", "Бразилия", "Венесуэла", "Колумбия", "Чили" >; // добавляем список элементов domainUpDown1.Items.AddRange(states); domainUpDown1.TextChanged += domainUpDown1_TextChanged; > // обработка изменения текста в элементе void domainUpDown1_TextChanged(object sender, EventArgs e) < MessageBox.Show(domainUpDown1.Text); >>

Для обработки изменения текста здесь таке, как и для элемента TextBox, можно использовать событие TextChanged , в обработчике которого мы выводим выбранный текст в сообщение.

Как установить диапазон значение для numericupdown

На этом шаге мы рассмотрим назначение и основные свойства этого компонента .

  1. https://metanit.com/sharp/windowsforms/4.10.php
  2. https://studfile.net/preview/7124448/page:37/

Элемент управления NumericUpDown представляет собой сочетание текстового поля и пары кнопок со стрелками для выбора значения пользователем.

Рис.1. Компонент NumericUpDown на форме в режиме создания приложения

Он выводит и задает отдельное числовое значение в списке вариантов фиксированных числовых значений. Пользователь может увеличивать и уменьшать число, нажимая кнопки со стрелками вверх и вниз или клавиши со стрелками ВВЕРХ и ВНИЗ , а также вводя число в области текстового поля элемента управления. При нажатии клавиши со стрелкой ВВЕРХ число увеличивается до максимума; при нажатии клавиши со стрелкой ВНИЗ число уменьшается до минимума.

Свойства этого компонента представлены на рисунке 2.

Рис.2. Свойства компонента NumericUpDown

  • Minimum — задает минимальное число (значение по умолчанию – 0),
  • Maximum — задает максимальное число (значение по умолчанию – 100) и
  • Increment — шаг приращения (значение по умолчанию – 1).

Само значение элемента хранится в свойстве Value .

По умолчанию элемент отображает десятичные числа. Однако если мы установим его свойство Hexadecimal равным True , то элемент будет отображать все числа в шестнадцатеричной системе (рисунок 3).

Рис.3. В свойстве Value задано десятичное значение 78

Если мы хотим отображать в поле дробные числа, то можно использовать свойство DecimalPlaces , которое указывает, сколько знаков после запятой должно отображаться. По умолчанию это свойство равно нулю.

Также можно задать отображение тысячного разделителя. Для этого для свойства ThousandsSeparator надо установить значение True . Например, numericUpDown при Value=1000,03, DecimalPlaces=2 и ThousandsSeparator=True (рисунок 4):

Рис.4. Вид компонента с разделителями тысяч

Примечание . Даже в том случае, если значение элемента управления NumericUpDown отображается в шестнадцатеричном формате, в любых проверках для свойства Value будет проверяться его десятичное значение.

  1. Выберите в Панели элементов на вкладке Все формы Windows Form элемент управления NumericUpDown и добавьте его на форму.
  2. В окне Properties ( Свойства ) элемента управления NumericUpDown установите свойства Value, Maximum, Minimum и Increment .

Прочитать заданное значение можно, например, так:

private: System::Void numericUpDown1_ValueChanged(System::Object^ sender, System::EventArgs^ e) < double x = Convert::ToDouble(numericUpDown1->Value); >

На следующем шаге мы рассмотрим компонент DomainUpDown .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *