načasování   zodpovězená otázka

VB.NET, Komponenty, WinForms

Ahoj,omlouvám se že zde otravuji a takovou banalitou ale nemohu na to za boha přijít.Potřebuji "rozhýbat" labely...zprvu jsem zkoušel stopnout aplikaci to se nejevilo jako nejlebší nápad tak jsem použil timer ale neumim s nim moc pracovat...umim mu nastavit interval v Properties a potom pokud se interval rovná tomu z properties vykoná se akce,v mém případě se přepne label.

Potřeboval bych ale poradit jak to udělat aby se stala nějaká akce kterou naprogramuji i po 2 a 3 vteřinách a tak dále.

Předem děkuji.

ps: pokud někdo zná lebší zpusob rád se přiučím

nahlásit spamnahlásit spam 0 odpovědětodpovědět

V prvé řadě - neomlouvejte se, že se ptáte na banalitu, pokud se něco učíte, i takovým stádiem si musíte projít. Za co byste se ale měl spíše omlouvat, je styl Vašich dotazů, ze kterých, přiznám se, nejsem moc chytrý a spíše se musím domýšlet, na co se snad ptáte. Přečtěte si to vždy, prosím, po sobě a zkuste popřemýšlet, jestli z Vašeho textu může i osoba neznalá Vašich konkrétních problémů pochopit, o co Vám vlastně jde.

Netuším, co máte na mysli, když hovoříte, že potřebujete rozhýbat labely, už vůbec nechápu, kam míří Vaše otázka "jak udělat aby se stala akce, kterou naprogramuji i po 2 a 3 vteřinách a tak dále", když před tím píšete, že zvládáte nastavit interval v properties a pak se to po tomto intervalu provede...

Takže se mohu opravdu spíše jen domýšlet - pokud máte na mysli jak zajistit nějakou akci, která se bude každou sekundu opakovat, pak je to celkem jednoduché.

Dejte si do projektu timmer - buď v design módu přetažením, nebo přímo v kódu aplikace na začátek kódu Vašeho formuláře:

Public Class Form1
       Private WithEvents cas As New Windows.Forms.Timer

(Pokud chcete akci opakovat stále dokola jsou k dispozici i vhodnější timmery, ale protože chcete ovládat prvky na formuláři, použijte tento - je to nejjednodušší)

Pak do metody Load Vašeho formuláře zadejte:

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    cas.Interval = 1000
    cas.Start()
End Sub

tím nastavíte čas (v tomto případě 1 s) a časovač spustíte. Ten čas, samozřejmě, můžete zadat i v design módu do properties, ale to spuštění musíte provést již sám - buď tady, pokud to má naběhnout samo a okamžitě, nebo třeba pod nějaké tlačítko)

No a teď si již jenom vytvoříte požadovanou akci, která se má po té 1 s provést, tedy například:

Private Sub cas_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles cas.Tick
'tady bude libovolná akce, kterou chcete provést:
   Label1.Visible = Not Label1.Visible

' nakonec opěs spusťte nové odpočítávání časovače
   cas.Start()
End Sub

no a pokud chcete, aby se Vaše akce po další sekundě opět zopakovala, nezapomeňte v metodě výše časovač zase spustit

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Prominte,jsem při psaní dosti horlivý ale děkuji za snahu bohužel vámi popsaný "program" se mi bohužel povedl...proč bohužel?

Proto že nefunguje jak sem chtěl,má fungovat takto:

spustím program a zapne se počítadlo

po 1 vteřině se provede jedna akce

po 2 vteřině další ale jiná...pokud mám uvést příklad po vteřině se změní pozadí form1 po další vteřině se třeba změní label a dalši vteřinu třeba přesune label na jinou danou pozici

Doufám že jsem to tentokrát nezvrtal a popsal dostatečně srozumitelně.

Děkuji.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
Public Class Form1
    Dim counts As Integer

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Timer1.Enabled = True
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        counts = counts + 1
        Select Case counts
            Case 1
                'kód, ktorý sa vykoná, keď je počet sekúnd 1: napríklad
                Me.BackColor = Color.Aqua
            Case 2
                'kód, ktorý sa vykoná, keď je počet sekúnd 2: napríklad
                Me.BackColor = Color.Yellow
            Case 3
                'kód, ktorý sa vykoná, keď je počet sekúnd 3: napríklad
                Label1.Left = 230
                Label1.Top = 160
                'a tak ďalej

        End Select
    End Sub
End Class

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

A s timerem vytvořeným za běhu aplikace, jak uvedl pan Langer, by to mohlo vypadat podobně jako:

 Public Class Form1
   Private WithEvents cas As New Windows.Forms.Timer
   Dim akce As Integer = 1 ' počítadlo akcí

   Private Sub Form1_Load(ByVal sender As System.Object, _
        ByVal e As   System.EventArgs) Handles MyBase.Load
     cas.Interval = 1000
     cas.Start()
   End Sub

   Private Sub cas_Tick(ByVal sender As Object, _ 
       ByVal e As System.EventArgs) Handles cas.Tick
     ' tady bude libovolná akce, kterou chcete provést,
     ' např. chcete provést 5 akcí v nastaveném intervalu 1 sekundy (= 1000 milisekund):
     Select Case akce
       Case 1
         Label1.Text = "Probíhá akce 1"
       Case 2
         Label1.Text = "Probíhá akce 2"
       Case 3
         Label1.Text = "Probíhá akce 3"
       Case 4
         Label1.Text = "Probíhá akce 4"
       Case 5
         Label1.Text = "Probíhá akce 5 - poslední"
         ' hotovo, zastavíme timer
         cas.Stop()
     End Select
     akce += 1
   End Sub

 End Class

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Děkuji vám funguje to perfektně.Jen mě mrzí že jsem na to nepřišel sám,bylo to poměrně jednoduché.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback