Нажмите кнопку и посчитайте Vb.Net

#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. Получи метку
  2. Преобразуйте значение в целое число
  3. Увеличьте значение на 1
  4. Проверьте, не превышает ли новое значение 9999
  5. При необходимости сбросьте значение до 1, если верно значение 4
  6. Установите текст кнопки в форматированный результат
  7. Установите для тега кнопки новое значение

Вот пример:

 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. Нет, дело не в этом.