lelouch_vi 2 Ответов: 3

Как остановить счетчик с числовым программным управлением увеличения и вывести сообщение?


У меня есть Числовое Управление Обновлением и этикетка он соединен с меткой. Что я хотел сделать, так это когда ... этикетка при достижении 0 он должен отображать сообщение типа "у вас недостаточно очков", и NUD не должен быть в состоянии увеличивать или уменьшать.. Я получил эту часть работы но сообщение выскакивает дважды Я знаю, что это всего лишь незначительная ошибка, но я уже несколько часов пытаюсь понять это .

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

Ниже приведен мой код для отображения сообщения, когда метка достигает 0, но отображаемое сообщение хлопает дважды который не является правильным.

Private Sub numCategory_ValueChanged(sender As Object, e As EventArgs) Handles numCategory.ValueChanged


       If num <> 0 Then

           lblpoints.Text = (num - numCategory.Value).ToString

       Else

           numCategory.Value = 0
           MsgBox("No more points to allocate")


       End If

   End Sub

3 Ответов

Рейтинг:
27

Maciej Los

Как указал Рикзиленд... нижняя строка избыточна и поднимает numCategory_ValueChanged опять событие!

numCategory.Value = 0


Что касается кода... Я бы изменил тело события таким образом:
num = numCategory.Value 'set value of NUD to "num" variable
If num = 0 Then MsgBox("No more points to allocate") 'display message
numCategory.Enabled = (num > 0) 'enable/disable NUD
lblpoints.Text = num.ToString()'display current value of NUD


Рейтинг:
20

BillWoodruff

в случае достижения нуля либо:

1. скройте элемент управления numCategory

или

2. Установите для свойства Enabled элемента управления numCategory значение 'false


Maciej Los

5ed!

Рейтинг:
2

RickZeeland

Сообщение приходит дважды, потому что вы меняете значение:

numCategory.Value = 0
Поэтому закомментируйте эту строку или используйте некоторую конструкцию с булевой переменной, чтобы пропустить сообщение.


Maciej Los

Хорошая мысль!

lelouch_vi 2

Привет Рикзиленд,

Да, я думаю, что это из-за той строки, которая вызывает событие ValuChange, которое срабатывает дважды, но без установки NUD на ноль, и пользователь нажимает на метку неправильно себя ведет. Я думаю, что лучшее решение для этого-установить NUD в false, когда метка достигает 0. Но все равно спасибо.