Рейтинг:
6
lelouch_vi 2
После нескольких недель и дней поиска решения я уже нашел это:
Я просто оставлю это здесь для тех, кто ищет то же самое решение, что и мое.
Теперь это код, который я использую для СОБЫТИЕ NUD_VALUECHANGED:
Shered num As Integer = 100
Private Sub numCategory_ValueChanged(sender As Object, e As EventArgs) Handles numCategory.ValueChanged
lblpoints.Text = (num - numCategory.Value).ToString
End Sub
Ниже приведен код для моего
СОХРАНИТЬ кнопка, потому что мой проект подключен к базе данных.
То, что он делает, это то, что он сохраняет ценность
ЭТИКЕТКА и изменил значение самого
NUD к
0 опять же в то время как
ЭТИКЕТКА остается на том уровне, который он имеет до того, как
СОХРАНИТЬ кнопка нажата
Static oldvalue As String
oldvalue = lblpoints.Text
numCategory.Value = 0
lblpoints.Text = oldvalue
num = Convert.ToInt32(oldvalue)
и для моего
ПОНЯТНО кнопка:
Если пользователь просто хочет вернуть NUD к его значению по умолчанию.
numCategory.Value = numCategory.Minimum
Рейтинг:
0
OriginalGriff
Вы не можете сделать это без фаффинга - когда вы очищаете NumericUpDown, значение изменяется, и это запускает обновление.
Что вы могли бы сделать, так это иметь две переменные уровня класса (не используйте статические, это совсем не то, что вам нужно) целое число, которое хранит последнее значение, и логическое значение, которое "переопределяет" значение.
Затем в событии изменения проверьте переопределение: если оно установлено, очистите его и используйте сохраненное значение. Если это не так, используйте значение из NumericUpDown.
Когда вы хотите очистить элемент управления, сначала установите сохраненное значение и переопределение, а затем очистите элемент управления.
lelouch_vi 2
еще раз здравствуйте. Ты снова здесь, чтобы спасти меня. С тех пор как вы опубликовали этот ответ, я действительно изо всех сил стараюсь понять, что вы имели в виду под этим переопределением. Я могу, по крайней мере, понять, что вы пытаетесь объяснить, но проблема в том, что я не знаю, с чего начать. Я попытался объявить переменную, подобную тому, что вы сказали на уровне класса, как логическое значение. и это все. Я не знаю, что мне делать дальше. Я беспомощен.
OriginalGriff
В обработчике используйте оператор If, чтобы узнать, является ли логическое значение переопределения истинным или ложным. Я уверен, что ты знаешь, как это сделать, если перестанешь паниковать!
lelouch_vi 2
ха-ха, спасибо за моральную поддержку, может быть, я просто упускаю из виду кое-что здесь. Я дам вам знать, когда у меня уже будет прогресс.
lelouch_vi 2
Привет, я действительно заблудился. Я не знаю, что делать дальше.
Моя проблема заключается в следующем, скажем, например, я увеличиваю значение NUD до 20, так что метка должна стать 80, и я получил ее работу, но если я нажму кнопку "Очистить", которая имеет этот код numCategory.ResetText() для очистки NUD метка остается на уровне 80. Я хочу, чтобы он также был сброшен до любого значения, которое он имеет перед событием numCategory_ValueChanged, а не до его исходного значения, потому что я использую значение NUD в качестве точек, которые будут вставлены в базу данных, и я использую метку в качестве отображения того, сколько точек осталось для пользователя.
OriginalGriff
Внимательно прочитайте то, что я сказал в своем первоначальном ответе!
lelouch_vi 2
Привет, OriginalGriff мне удалось обойти мою проблему здесь. Честно говоря, я не знаю, как выполнить ваши предложения, и мне очень жаль.
Я сделал еще одну кнопку с именем capture, чтобы захватить значение метки до того, как NUD сможет изменить это значение.
Это код, который я использую для захвата значения метки.
retainedValue = Convert.ToInt32(lblpoints.Text)
и в кнопку Очистить я добавил этот код
numCategory.Value = 0lblpoints.Text = retainedValue.ToString()
Теперь он работает так, как я намеревался, но мне нужно нажать кнопку захвата, прежде чем я смогу сделать что-то еще с NUD. Я попытался вставить код в различные события NUD только для того, чтобы сначала не нажимать кнопку "Захват".
Пожалуйста, помоги мне еще раз. Я хочу избежать нажатия кнопки "захват".