#vb.net
Вопрос:
Я хочу посчитать, сколько раз я нажимаю кнопку и отображаю число, но формат должен быть таким: 0001, если достигнет 9999, снова перезагрузитесь до 0001 и считайте до 9999.
Я пытался:
Private ButtonClickCount As Integer = 0
ButtonClickCount = 1
Label5.Text = "0000" amp; ButtonClickCount
И
Label5.Text = "0000" Val(Label5.Text) 1
Это был самый глупый способ, который я пробовал.лол
И результат был разочаровывающим.
Есть ли какой-нибудь простой способ сделать это?
Комментарии:
1. Позвоните
ToString
по указанному номеру, и вы сможете отформатировать его так, как вам нравится. Ознакомьтесь с документацией, чтобы узнать, какие варианты доступны.2. Что касается другой части, прочитайте то, что вы написали: «если достигнете 9999, снова перезагрузитесь до 0001». Это уже в основном псевдокод, так как насчет того, чтобы вы немного подумали, чтобы превратить его в реальный код. Когда вы говорите «если» в своем описании, должно быть совершенно очевидно, что вам нужно
If
утверждение в вашем коде.3. @jmcilhinney Спасибо. Сделаю это.
Ответ №1:
Если для подсчета используется статическая переменная, ее можно сохранить в обработчике событий щелчок кнопки. (Статические переменные используются не так часто, но это работает здесь, предполагая, что вам больше нигде не нужна переменная.)
Если вы проверите, достиг ли счетчик 10000, вы можете установить его обратно на 1.
Вы можете отформатировать число в .Метод toString.
Возможно, что-то вроде этого:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Static clickCount As Integer = 0
clickCount = 1
If clickCount = 10000 Then
clickCount = 1
End If
lblClickCount.Text = clickCount.ToString("0000")
End Sub
Ответ №2:
Вы можете использовать команду форматирования, которая определяет, сколько нулей вы хотите получить в выводе:
Dim ButtonClicks As Integer = 0
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
ButtonClicks = 1
Label1.Text = Format(ButtonClicks, "0000")
End Sub
Ответ №3:
Dim ButtonClicks As Integer = 0
Private sub Button1_click(sender as object, e as EventArgs) handles Button 1.click
Buttonclick =1
If buttonclick ="9999" then
Buttonlclick=1
Endif
Label1.text =format(Buttonclick, "0000")
End sub
Ответ №4:
Вам нужно будет где-то отслеживать счетчик, в этом случае я бы предложил хранить счетчик в свойстве тега элемента управления (документация). В событии нажатия кнопки вы должны выполнить следующее:
- Получи метку
- Преобразуйте значение в целое число
- Увеличьте значение на 1
- Проверьте, не превышает ли новое значение 9999
- При необходимости сбросьте значение до 1, если верно значение 4
- Установите текст кнопки в форматированный результат
- Установите для тега кнопки новое значение
Вот пример:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim clickedButton = DirectCast(sender, Button)
Dim tagValue = clickedButton.Tag
If (tagValue Is Nothing) Then
tagValue = 0
End If
Dim conversion As Integer
If (Not Integer.TryParse(tagValue.ToString(), conversion)) Then
conversion = 0
End If
conversion = 1
If (conversion > 9999) Then
conversion = 1
End If
clickedButton.Text = converstion.ToString("0000")
clickedButton.Tag = conversion
End Sub
Ответ №5:
Ну, извините, ребята, только что понял, что я мог бы использовать функцию PadLeft… И работал отлично.
ButtonClickCount = 1
Label5.Text = ButtonClickCount.ToString().PadLeft(5, "0")
Но все еще не знаю, достигнет ли он 9999, перезапустится с 0001
Комментарии:
1. Проверьте это:
Private ButtonClickCount As Integer = 9990
2. Нет, дело не в этом.