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

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

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

При этом надо учитывать, что если мы устанавливаем значение для свойства Value в окне свойств, то там в качестве разделителя цеой и дробной части используется запятая. Если же мы устанавливаем данное свойство в коде, тогда в качестве разделителя используется точка.
По умолчанию при нажатии на стрелочки вверх-вниз на элементе значение будет увеличиваться, либо уменьшаться на единицу. Но с помощью свойства Increment можно задать другой шаг приращения, в том числе и дробный.
При работе с NumericUpDown следует учитывать, что его свойство Value (как и свойства Minimum и Maximum ) хранит значение decimal. Поэтому в коде мы также должны с ним работать как с decimal, а не как с типом int или double.
DomainUpDown
Элемент DomainUpDown предназначен для ввода текстовой информации. Он имеет текстовое поле для ввода строки и две стрелки для перемещения по списку строк:

Список для DomainUpDown задается с помощью свойства Items . Список можно сразу упорядочить по алфавиту. Для этого надо свойству Sorted присвоить значение true .
Чтобы можно было циклично перемещаться по списку, то есть при достижении конца или начала списка его просмотр начинался с первого или последнего элемента, надо установить для свойства Wrap значение true .
В коде выбранное значение в DomainUpDown доступно через свойство Text. Например, добавим программно список строк в DomainUpDown и обработаем изменение выбора в списке:
Для обработки изменения текста здесь таке, как и для элемента TextBox, можно использовать событие TextChanged , в обработчике которого мы выводим выбранный текст в сообщение.
Счетчик NumericUpDown
Элемент управления NumericUpDown представляет собой сочетание текстового поля и пары кнопок со стрелками для выбора значения пользователем.

Он выводит и задает отдельное числовое значение в списке вариантов фиксированных числовых значений. Пользователь может увеличивать и уменьшать число, нажимая кнопки со стрелками вверх и вниз или клавиши со стрелками ВВЕРХ и ВНИЗ, а также вводя число в области текстового поля элемента управления. При нажатии клавиши со стрелкой ВВЕРХ число увеличивается до максимума; при нажатии клавиши со стрелкой ВНИЗ число уменьшается до минимума.
Элемент управления NumericUpDown используется во многих приложениях панели управления Windows.
Выводимые значения могут быть представлены текстовом поле элемента управления в различных форматах, в том числе в шестнадцатеричном. Ключевые свойства элемента управления: Value, Maximum (значение по умолчанию – 100), Minimum (значение по умолчанию – 0), и Increment (значение по умолчанию – 1). Свойство Value устанавливает текущее значение, выбранное элементом управления. Свойство Increment задает шаг изменения значения при нажатии кнопки со стрелкой вверх или вниз. При снятии фокуса с элемента управления любые введенные данные проверяются на соответствие с минимальным и максимальным числовыми значениями. Для увеличения скорости перемещения элемента управления в зависимости от непрерывности нажатия пользователем клавиш со стрелкой вверх и вниз можно использовать свойство Accelerations.
Создание счетчика
Чтобы создать счетчик:
Выберите в Панели элементов на вкладке Все формы Windows Form элемент управления NumericUpDown и добавьте его на форму.
В окне Свойства элемента управления NumericUpDown установите свойства Value, Maximum, Minimum и Increment
Создайте двойным щелчком по элементу управления DomainUpDown обработчик события смены элемента списка, например:
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
glob.frm_child.Font = new Font(«Sans Serif», n);
Определение формата элемента управления NumericUpDown в Windows Forms
Существует возможность настройки отображения значений в элементе управления Windows Forms NumericUpDown. Свойство DecimalPlaces определяет количество знаков после десятичной запятой, по умолчанию используется нулевое значение. Свойство ThousandsSeparator определяет, будет ли вставлен разделитель между каждыми тремя десятичными знаками; по умолчанию используется значение false. В том случае, если свойству Hexadecimal присвоено значение true, этот элемент управления может отображать значения в шестнадцатеричном формате вместо десятичного; по умолчанию используется значение false.
Примечание. Даже в том случае, если значение элемента управления NumericUpDown отображается в шестнадцатеричном формате, в любых проверках для свойства Value будет проверяться его десятичное значение.
Индикатор процесса ProgressBar
Элемент управления форм ProgressBar (Windows Forms) показывает, на какой стадии находится выполняемое действие, что выражается в соответствующем числе прямоугольников, расположенных на горизонтальной шкале.

Завершение действия характеризуется заполненной шкалой. Индикаторы хода работы обычно используются, чтобы показать пользователю время, оставшееся до завершения длительного действия, например при загрузке большого файла.
Установка значения, отображаемого c помощью элемента управления ProgressBar в Windows Forms
.NET Framework позволяет отображать заданное значение в элементе управления ProgressBar несколькими способами. Выбор способа зависит от поставленной задачи или проблемы, которую требуется решить. В следующей таблице показаны доступные для выбора подходы.
Задайте значение элемента управления ProgressBar напрямую.
Этот подход используется в задачах, когда известно точное количество используемых элементов, например при чтении записей из источника данных. Помимо этого, данный подход можно использовать и в том случае, если нужно задать значение один или два раза. Наконец, данный подход можно использовать, если требуется уменьшить значение, отображаемое индикатором выполнения.
Увеличьте отображаемое значение элемента управления ProgressBar на фиксированную величину.
Этот способ можно использовать при отображении простого счета между минимумом и максимумом, например при отображении затраченного времени или количества файлов из известного общего количества, которые были обработаны.
Увеличьте отображаемое значение элемента управления ProgressBar на переменную величину.
Этот способ можно использовать, когда требуется изменить отображаемое значение несколько раз на различные величины. В качестве примера выбрано количество места на жестком диске, которое расходуется при записи набора файлов на диск.
Самый прямой способ задать значение, отображаемое индикатором выполнения, — задать значение свойства Value. Это можно сделать в режиме разработки, а также во время выполнения.
Чтобы задать значение элемента управления ProgressBar напрямую
Задайте значения Minimum и Maximum элемента управления ProgressBar.
В коде задайте для свойства Value элемента управления целочисленное значение, которое находится между указанными минимумом и максимумом.
Примечание. Если задать значение свойства Value, которое выходит за рамки диапазона, установленного свойствами Minimum и Maximum, элемент управления создает исключение ArgumentException.
В следующем примере кода показано, как задать значение элемента управления ProgressBar напрямую. С помощью кода последовательно в текстовом многострочном поле textBox1 создается список файлов из папки Мои документы. Каждый раз при записи имени очередного файла в текстовое поле обновляются индикатор выполнения и его метка. Для данного примера требуется присутствие на форме элемента управления textBox и элемента управления ProgressBar.
private void toolStripMenuItem6_Click(object sender, EventArgs e)
DirectoryInfo Dir = new DirectoryInfo(@»C:\Мои документы«);
FileInfo[] F1 = new FileInfo[100];
F1=Dir.GetFiles();
string[] Ln = new string[100];
for (i = 0; i < F1.Count(); i++)
Ln[i] = F1[i].Name;
progressBar1.Value = i;
progressBar1.Value = 100;
textBox1.Lines = Ln;
При отображении хода выполнения, который увеличивается на постоянный числовой интервал, можно задать значение и затем вызвать метод, который увеличивает значение элемента управления ProgressBar на этот числовой интервал. Это используется в таймерах и других сценариях, когда ход выполнения не измеряется в процентах от общей величины.
Чтобы увеличить отображаемое значение индикатора выполнения на фиксированную величину
Задайте значения Minimum и Maximum элемента управления ProgressBar.
В качестве значения свойства Step задайте целое число, представляющее величину, на которую следует увеличить отображаемое значение индикатора выполнения.
Вызовите метод PerformStep для изменения отображаемого значения на величину, заданную в свойстве Step.
В следующем примере кода показано, как с помощью индикатора выполнения отобразить течение времен за промежуток20секунд с шагом 2 секунды.
В этом примере требуется, чтобы форма содержала элемент управления Timer и элемент управления ProgressBar.
В окне Свойства для элемента управления Timer установите свойства: Interval=2000; Enabled=false (таймер не запущен).
В окне Свойства для элемента управления ProgressBar установите свойства: Minimum=0; Maximum=10; Step=1.
Пропишите функцию изменения состояния элемента управления ProgressBar через каждые 2 сек на 1 прямоугольник.
private void timer2_Tick(object sender, EventArgs e)
ProgressBar1.PerformStep();
Пропишите функцию запуска таймера.
private void toolStripMenuItem6_Click(object sender, EventArgs e)
Наконец, можно увеличить значение, отображаемое индикатором выполнения, таким образом, чтобы каждое приращение являлось уникальным числом. Это используется при отслеживании серий уникальных операций, например при записи файлов различных размеров на жесткий диск или при измерении хода выполнения в процентах от общего значения.
Чтобы увеличить отображаемое значение индикатора выполнения на переменную величину
Задайте значения Minimum и Maximum элемента управления ProgressBar.
Вызовите метод Increment для изменения отображаемого значения на указанную величину.
В следующем примере кода создаются три числа из диапазона [3;8] и индикатором показывается, как изменяется значение переменной S (S=0 изначально), если к ней последовательно прибавлять созданные числа.
В этом примере требуется, чтобы форма содержала элемент управления Label, элемент управления Timer и элемент управления ProgressBar.
Объявите глобальные переменные:
public static class loc
public static int[] y=new int[3];
public static int k,S=0;
Пропишите функцию изменения состояния элемента управления ProgressBar:
private void timer3_Tick(object sender, EventArgs e)
label4.Text = label4.Text + loc.y[loc.k].ToString();
progressBar2.Increment(loc.y[loc.k]);
label4.Text = label4.Text + » left»> >;
Пропишите функцию запуска таймера.
private void toolStripMenuItem6_Click(object sender, EventArgs e)
timer3.Enabled = true;
Random x = new Random();
for (i = 0; i < 3; i++)
loc.S = loc.S + loc.y[i];
progressBar2.Maximum = loc.S; label4.Text = «S left»> >
Примечание. Представленные выше варианты кода не являются единственными.
Пример. Создадим репетитор по работе с клавиатурой.

При нажатии кнопки «Новый текст» в поле Текст должен появляться текст из нескольких слов и запускаться таймер. По истечении времени, указанном в поле NumericUpDown, производится подсчет верных символов, введенным пользователем в текстовое поле.

Число слов должно генерироваться по принципу: 1-3 слова на каждые 5 сек.
Число символов в слове должно генерироваться по принципу: 3-6 символа на 1 слово.
По истечении времени текстовое поле блокируется от ввода данных.
Создадим ряд вспомогательных переменных:
namespace Metodichka
// время, индикатор процесса, время процесса
int t = 5,ind=0,tp=0;
// начальное время процесса
DateTime t0;
// датчик случайных чисел
Random r = new Random();
// число слов
Создадим функцию генерирования слов в зависимости от установленного времени:
private string word(object sender, EventArgs e)
// d – длина слова, cod – код символа
int i, j, cod, d;
for (i = 0; i <= n; i++)
for (j = 0; j < d; j++)
s = s + Char.ConvertFromUtf32(cod);
В обработчике загрузке формы пропишем начальные данные:
private void Form11_Load(object sender, EventArgs e)
// Системное время, отображаемое в строке состояния
toolStripStatusLabel1.Text + DateTime.Now.ToLongTimeString();
В обработчике изменения времени в счетчике NumericUpDown пропишем сохранение значения в переменной длины процесса t:
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
Создадим функцию, осуществляющую проверку ответа, вводимого пользователем:
private void proverka(object sender, EventArgs e)
// k – число верных символов, min – длина проверяемой строки
int k = 0,min=0, i;
if (label2.Text.Length < textBox1.Text.Length) min = label2.Text.Length;
else min = textBox1.Text.Length;
for (i = 0; i < min; i++)
if (label2.Text[i] == textBox1.Text[i]) k++;
int pr=k*100/label2.Text.Length;
label4.Text + k.ToString() + » — » + pr.ToString()+»%»;
В обработчике нажатия кнопки «Новый текст» пропишем начальные параметры процесса:
private void toolStripButton1_Click(object sender, EventArgs e)
// фиксируем время начала процесса
t0 = Convert.ToDateTime(DateTime.Now);
//рассчитываем число слов
// очищаем текстовое поле
textBox1.Text = «»;
// генерируем текст
label2.Text = word(sender, e);
//переводим курсор в текстовое поле
textBox1.Focus();
//включаем индикатор процесса
//делаем доступным для ввода текстовое поле
textBox1.Enabled = true;
//устанавливаем индикатор процесса в строке состояния в начальное положение
toolStripProgressBar1.Value = 0;
//задаем максимальное значение индикатора процесса в строке состояния
toolStripProgressBar1.Maximum = t;
// можно задать единое количество шагов
// toolStripProgressBar1.Step = t / 5;
В обработчике работы таймера пропишем код:
private void timer1_Tick(object sender, EventArgs e)
//фиксируем текущее значение времени процесса
tp=(Convert.ToDateTime(DateTime.Now) — t0).Seconds;
//отображаем значение времени процесса в строке состояния
toolStripStatusLabel2.Text +tp.ToString();
//изменяем показатель индикатора процесса в строке состояния
toolStripProgressBar1.PerformStep();
// в строке состояния отображаем системное время
toolStripStatusLabel1.Text + DateTime.Now.ToLongTimeString();
//если время процесса стало равным заданному в счетчике, то останавливаем процесс
//делаем недоступным для ввода текстовое поле
textBox1.Enabled = false;
//запускаем функцию проверки результата
proverka(sender, e);
//обнуляем текущее время процесса, чтобы повторно не заходить в данный блок
NumericUpDown и использование десятичных значений в C#

Большинство разработчиков знают, что элемент NumericUpDown позволяет пользователю выбирать число, но мало кто знает, что он может обрабатывать десятичные значения в дополнение к целым числам.
Свойство DecimalPlaces элемента управления определяет количество цифр после десятичного знака, которое позволяет элемент управления. Свойство Increment определяет величину изменения значения, когда пользователь нажимает стрелки вверх или вниз. По умолчанию Increment равно 1. Если вы установите DecimalPlaces больше 0, вы можете установить Increment на значение меньше 0, чтобы сделать это проще для пользователя выбирать десятичные значения. Вы также можете изменить Minimum и Maximum, чтобы ограничить значения до разумного диапазона.
Обратите внимание, что этот элемент управления может быть неудобным, если пользователь должен выбрать десятичные значения в большом диапазоне, и элемент управления позволяет много цифр после десятичной точки. Например, если Minimum = 0, Maximum = 1000, DecimalPlaces = 3 и Increment = 0.001, тогда пользователь не может легко выбрать значение 987.654, щелкнув стрелки вверх и вниз. Пользователь все еще может щелкнуть и перетащить, чтобы выбрать значение, а затем ввести новое значение, но клавиши со стрелками не очень полезны.
В этом примере пользователь может выбрать десятичные значения от 0 до 1 с помощью DecimalPlaces = 2. Затем программа рисует эллипс с шириной и высотой, которые равны выбранному числу, умноженному на ширину и высоту формы.
При запуске программы он использует следующий код для подготовки элемента NumericUpDown с именем nudScale.
Когда пользователь нажимает кнопку «вверх» или «вниз» элемента управления, следующий код преобразует форму в себя.
Как установить диапазон значение для numericupdown
На этом шаге мы рассмотрим назначение, основные свойства и пример использования этого компонента .
Компонент NumericUpDown (рисунок 1) предназначен для ввода числовых данных.
Рис.1. Компонент NumericUpDown
Данные можно ввести в поле редактирования путем набора на клавиатуре или изменить уже введенные данные при помощи командных кнопок Увеличить и Уменьшить , которые находятся справа от поля редактирования.
Свойства компонента NumericUpDown приведены в таблице 1.
| Свойство | Описание |
|---|---|
| Value | Значение, соответствующее содержимому поля редактирования |
| Maximum | Максимально возможное значение, которое можно ввести в поле компонента |
| Minimum | Минимально возможное значение, которое можно ввести в поле компонента |
| Increment | Величина, на которую увеличивается или уменьшается значение свойства Value при каждом щелчке мышью на кнопках Увеличить или Уменьшить |
| DecimalPlaces | Количество цифр дробной части числа |
Если в поле редактирования компонента NumericUpDown введено дробное число, то в результате нажатия клавиши Enter оно будет округлено до DecimalPlaces цифр дробной части. При этом если значение свойства DecimalPlaces равно нулю, то значение в поле компонента будет округлено до целого.
Программа «Таймер» (ее форма приведена на рисунке 2, а текст — в листинге ниже) демонстрирует использование компонента NumericUpDown .
Рис.2. Форма программы «Таймер»
Компоненты numericUpDown1 и numericUpDown2 используются для ввода значения интервала времени. Во время создания формы свойству Maximum обоих компонентов надо присвоить значение 59.
Приведем текст приложения.
Прокомментируем приведенный текст.
При изменении значения, находящегося в поле редактирования компонента NumericUpDown , возникает событие ValueChanged . Функция обработки этого события (одна для обоих компонентов) управляет доступностью кнопки Пуск . Она проверяет значения свойств Value и, если интервал не задан (равен нулю), делает кнопку недоступной. Процедура обработки события Click , возникающего при щелчке на кнопке button1 , запускает или, если таймер работает, останавливает таймер. При запуске таймера в переменную t1 записывается текущее время, а в переменную t2 — значение, сдвинутое вперед на величину интервала ( t2 = момент запуска + интервал ). Процедура обработки события Tick таймера уменьшает на единицу значение t2 и, если оно становится равным t1 , останавливает таймер. Она же обеспечивает индикацию — выводит в поле компонента label1 , сколько времени (минут и секунд) осталось до момента «срабатывания» таймера.