Visual Basic 2010 Blokada czasowa na buttona

Cześć,

Chcę zrobić tak, że jeśli po kliknięciu buttona zablokuje się w sensie wyłączy a po minucie się włączy i będzie można dalej z niego “korzystać”.

Z góry dzięki za pomoc.

1)Z Toolboxa dołącz do programu obiekt Timer i ustaw jego własności na: interwal=1000  : enabled=false (1000 milisekund= 1 sekunda)

  1. Zadeklaruj zmienną globalną np o nazwie czas:  Dim czas as integer

W butonie wpisz: czas=0: timer1.enabled=true: button1.enabled=false

3)W timerze wpisz:

czas=czas+1

if czas=60 then button1.enabled=true: timer1.enabled=false:czas=0

 

 

 

Jak pisze w kodzie timera to mi pokazuje “czas is not declared”

Zmienna nie jest widoczna i musi być zadeklarowana na zewnątrz formy.

A wytłumaczysz mi to jakoś jaśniej?

Może tu wystarczy:

Public Class Form1
  Dim czas As Integer

Można też stworzyć moduł w którym deklarujemy zmienne lub procedury widoczne w całym projekcie czyli tzw zmienne publiczne. W projekcie można np. mieć kilka form i jeżeli chcemy aby były widoczne w każdej formie to deklarujemy je właśnie w module.

Klikamy Project—> Add class–>.Module

W tym module wpisujemy:
  Module Module1
    Public  czas As Integer
End Module

Słowo Public jest bardzo ważne bo jeśli go nie użyjemy, to zmienna będzie  widoczna  tylko w tym module.

Zmienne, procedury, funkcje dzielimy na lokalne (prywatne) widoczne tylko w obrębie obiektu w którym zostały zadeklarowane lub globalne(publiczne) obejmujące swym zasięgiem cały project.

W zależności od potrzeby tak je też deklarujemy.

Private function()

Public function()

Jeżeli nie użyjemy słowa private to domyślnie tak będzie rozumiana dana deklaracja.

l

 

No ok to juz naprawilem. tylko ze jeszcze jak minie ta minuta to button sie nie włącza…

Musi działać jeżeli poprawnie wpisane. Nie pokazuje żadnego błędu?

Może źle wpisałeś interval dla zegara, to można umieścić tą cechę w buttonie

Możesz jeszcze dla sprawdzenia dodać okienko tekstowe na formie, a w procedurze zegara wpisać:

 

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

        czas = czas + 1

        TextBox1.Text = czas

        If czas = 60 Then Button1.Enabled = True : czas = 0 : Timer1.Enabled = False

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

       timer1.interval=1000

       czas=0: Button1.enabled=false: Timer1.Enabled = True

    End Sub

 

Stworzylem nowy projekt i to działalo ten kod co tu napisales a w tym (tej aplikacji co robie) nie dziala. Wiesz moze dlaczego?

Ale dzieki za pomoc.

dobra zrobilem nowy projekt i nie ma tego problemu dzieki za pomoc :D:DDDDD.

Do poszukiwania błędów w programie przydatna jest opcja oznaczona jako Debug.

Jeżeli chcemy przetestować jakąś procedurę, to klikamy na szarym pasku z lewej strony obok linii od której rozpocznie się testowanie i u ruchamiamy program. Wykonywanie programu zatrzyma się na linii którą zaznaczyliśmy. Aby przejść do następnej linii naciskamy klawisz F8 i tak do do końca procedury. Umieszczając kursor myszki nad jakąś zmienną będziemy mieli podgląd jaką wartość przyjmuje aktualne ta zmienna. W ten sposób można znaleźć linię gdzie działanie nie jest prawidłowe. Przy tak krótkich procedurach jak w tym przypadku błąd można znaleźć bardzo szybko.

Proponuję też używać przy deklarowaniu zmiennych  wyrazów znaczących. Przy dużej liczbie zmiennych można się pogubić gdy zmienne są oznaczone tylko literami i nie bardzo wiadomo co one oznaczają. Warto też używać dużych liter w nazwie zmiennej. np. “Czas”, a nie “czas” bo wówczas wszędzie ta zmienna będzie zaczynała się od dużej litery i łatwiej wychwycić błąd gdy np. gdzieś tam przez pomyłkę napiszemy np. “czes” zamiast “czas”.