Member 13081540 Ответов: 2

Как уменьшить значение текстового поля, если пользователь уменьшает значение числового элемента управления up down


Здравствуйте, я искал решение, но не смог его найти. Как говорится в заголовке, я хочу изменить значение текстового поля, если пользователь уменьшит значение элемента управления up numeric up down.

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

Что я уже пробовал:

Я пытался сделать это с помощью события value changed, оно работало для увеличения, но каждый раз, когда я уменьшаю значение nup, оно увеличивается, а не уменьшается. :
       decimal totalCost; //variable
private void nupWhiteC_ValueChanged(object sender, EventArgs e)
        {
            if (nupWhiteC.Increment == 1)
            {
                totalCost = totalCost + 0.50m;
                textBox1.Text = totalCost.ToString();
            }
            else if (nupWhiteC.Increment == -1)
            {
                totalCost = totalCost - 0.50m;
                textBox1.Text = totalCost.ToString();
            }
        } 


Заранее спасибо.

2 Ответов

Рейтинг:
7

OriginalGriff

То объект NumericUpDown.Имущество Прирост (Системы.Окна.Формы)[^] указывает, на сколько изменится значение, если пользователь нажмет одну из кнопок вверх или вниз, а не на сколько оно изменится.

Таким образом, независимо от того, нажал ли пользователь кнопку вверх или вниз, значение, полученное из свойства Increment, не изменится (если только ваш код специально не изменит его).

Я бы предложил использовать свойство Tag элемента управления для хранения последнего значения: затем вы можете определить, увеличило или уменьшило его использование (и на сколько), вычитая последнее значение из текущего (а затем сохраняя текущее значение в теге перед выходом из обработчика).
Я уверен, что вы знаете, но только для тех, кто менее образован: свойство Tag - это object - тебе нужно будет бросить его в котел. decimal для того, чтобы сделать вычитание.


Member 13081540

Вы имеете в виду создание десятичного числа например decimal oldValue а затем
если (nupWhiteC.Значение > У старого значения)
{
totalCost = totalCost + 0.50 м;
текстовое поле textbox1.Текст = totalcost в.Метод toString();
старого значения = nupWhiteC.Значение;
}
ещё
{
totalCost = totalCost-0,50 м;
текстовое поле textbox1.Текст = totalcost в.Метод toString();
}
старого значения = nupWhiteC.Значение;

OriginalGriff

В значительной степени, да - но храните oldValue в NumericUpDown.Свойство тега, так что это "часть" элемента управления.

Рейтинг:
12

ZurdoDev

Сначала я бы предложил научиться отлаживать, потому что вы будете разбираться в таких вещах гораздо быстрее. Свойство Increment - это то, насколько сильно изменяется значение при нажатии кнопки вверх или вниз. Таким образом, в вашем случае инкремент равен 1, и поэтому первый оператор if всегда выполняется. Опять же, просто поставьте точку останова, и вы увидите, что происходит.

Все, что вам нужно сделать, это проверить numWhite.Значение, а затем установите соответствующее текстовое поле.