Vertraging inschakelen bij een splashscreen

Pagina: 1
Acties:

  • HyperBart
  • Registratie: Maart 2006
  • Laatst online: 10:52
Beste,

In onze school zijn we op dit moment bezig met een project voor een verzorgings -en dagcentrum voor mentaal en fysiek gehandicapten.

Het idee was om in VS.NET 2003 een splashscreen te creëren. Vrij goed gelukt tot nu toe, het enige probleem is dat het splashscreen eigenlijk ONMIDDELIJK verdwijnt, niet de bedoeling, graag zouden we op de één of andere manier een vertragring van 2-3 seconden implementeren. is er een bepaalde manier om 2-3 seconden te laten tellen in de code zelf ? Eventueel met behulp van een timer ?

Tot nu toe is dit de code:

Visual Basic .NET: Weyerke Splashscreen
1
2
3
4
5
6
7
8
9
10
11
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Hide()

        Dim frmSplash As New Form2

        frmSplash.Show()
        frmSplash.Update()

        frmSplash.Close()
        Me.Visible = True
    End Sub

Verwijderd

Laat het splashform zichzelf sluiten, in zijn timer event.

  • HyperBart
  • Registratie: Maart 2006
  • Laatst online: 10:52
Dus, timertje toevoegen, enablen

En dan ? Hoe laat je hem tellen op X aantal tics ?

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Als je denkt te weten wat je nodig hebt, hoe kan het dat je het niet kan vinden in de Help of met Google? Wat levert timer of sleep op als je zoekt?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 17-10 16:43
volgens mij zit er een timer control in de system.timer namespace van het .net framework die kun je hiervoor gebruiken.

Edit: in VB.net gebruiken ze zo te zien geen namespaces als in C#.net, maar hier even de code die je moet hebben

Sleep eerst een timer naar je splashscreen vanuit de toolbar (onder All windows Forms, bij de T)

Zet de interval op 1000ms (doet iets elke 1sec) en zet enabled op true in de properties van de timer

daarna zet je deze code erin:

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Public Class Form1
    'deze declaratie is over in dit form toegankelijk
    Dim iWachten As Integer
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        'de integer iWachten wordt bij elke klok tik (bij elke intervanl)
        'nu dus bij elke 1000ms (1sec) verhoogt met 1
        'als iwachten de waarde 3 heeft berijkt wordt het scherm gesloten
        iWachten = iWachten + 1
        If iWachten = 3 Then Me.Close()
    End Sub

    Public Sub New()
        'Dit gebeurt zodra het splashscherm geladen wordt
        InitializeComponent()
        iWachten = 0
    End Sub
End Class


Edit: Damn it heeft hij het al, kan het ook niet helpen dat mijn VB.net zo traag laad en compiled! Anyway nu weet je ook hoe het met een timer moet _/-\o_

[ Voor 87% gewijzigd door roy-t op 06-02-2007 11:38 ]

~ Mijn prog blog!


  • HyperBart
  • Registratie: Maart 2006
  • Laatst online: 10:52
Gevonden, idd, meer op google zoeken, de sleep deed het 'm, dank je wel BtM909, dit project moeten we zelf maken, en zelf nieuwe soorten code opzoeken, vaak krijgen we hier of daar een beginwoordje of commando, en bouwen we hier op verder. Ik wou even weten of er iets was dat dit even kon vertragen

Er mag een slotje op :-)

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Het algemeen beleid #topiceinde, topics gaan niet direct en per definitie op slot ;)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 16:00

gorgi_19

Kruimeltjes zijn weer op :9

therat10430 schreef op dinsdag 06 februari 2007 @ 11:31:
Edit: in VB.net gebruiken ze zo te zien geen namespaces als in C#.net, maar hier even de code die je moet hebben
Niet? :? VB.Net werkt netjes met namespaces, zowel bij het Imports als eventueel met het aanspreken van een class inclusief namespace.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • ThunderNet
  • Registratie: Juni 2004
  • Laatst online: 12:13

ThunderNet

Flits!

Ik zou System.Thread importeren. En dan Thread.Sleep(aantal ms) gaan gebruiken. Erg simpel, en geen gekloot met timers :)

Heb je liever vooraf, of achteraf, dat ik zeg dat ik geen flauw idee heb wat ik doe?


  • BertS
  • Registratie: September 2004
  • Laatst online: 27-10 13:12
therat10430 schreef op dinsdag 06 februari 2007 @ 11:31:
Zet de interval op 1000ms (doet iets elke 1sec) en zet enabled op true in de properties van de timer
daarna zet je deze code erin:

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Public Class Form1
    'deze declaratie is over in dit form toegankelijk
    Dim iWachten As Integer
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        'de integer iWachten wordt bij elke klok tik (bij elke intervanl)
        'nu dus bij elke 1000ms (1sec) verhoogt met 1
        'als iwachten de waarde 3 heeft berijkt wordt het scherm gesloten
        iWachten = iWachten + 1
        If iWachten = 3 Then Me.Close()
    End Sub

    Public Sub New()
        'Dit gebeurt zodra het splashscherm geladen wordt
        InitializeComponent()
        iWachten = 0
    End Sub
End Class
Als je de timerinterval op 3000 zet, kun je de hele implementatie van iWachten weglaten... Code wordt dan:
Visual Basic .NET:
1
2
3
4
5
Public Class Form1
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Me.Close()
    End Sub
End Class

Verwijderd

Kan je niet gewoon Thread.Sleep(xxxx) ertussen zetten? Werkt toch ook?

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Maar met Thread.Sleep blokeer je wel je complete GUI. Stel dat je een window over je splash screen sleept terwijl hij er staat dan wordt hij niet opnieuw getekend.

Ik zou zelf ook gebruik maken van een timer.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • fre0n
  • Registratie: April 2005
  • Laatst online: 12-11 01:56
Voor 3 seconden vertraging:


dim tijdtrigger = timer + 3
do: doevents: loop until timer=>tijdtrigger

https://twitch.tv/magus77nl


  • schoene
  • Registratie: Maart 2003
  • Laatst online: 15:13
Ik zou je dan weer afraden een splashscreen te gebruiken: Een splashscreen is nuttig indien het starten van de applicatie een lange initialisatie nodig heeft, zoniet werkt een splashscreen gewoon frustrerend.
Wat is nu het enige nut van dat schermpje daar 3 seconden te tonen? Eenvoudigweg je gebruikers 3 seconden laten wachten. Toon liever je scherm bij het starten van je initialisatie, en sluit het weer bij het einde ervan. En indien die tijd verwaarloosbaar is, toon dan helemaal geen splash-screen.

Verwijderd

schoene schreef op dinsdag 06 februari 2007 @ 15:25:
Ik zou je dan weer afraden een splashscreen te gebruiken: Een splashscreen is nuttig indien het starten van de applicatie een lange initialisatie nodig heeft, zoniet werkt een splashscreen gewoon frustrerend.
Wat is nu het enige nut van dat schermpje daar 3 seconden te tonen? Eenvoudigweg je gebruikers 3 seconden laten wachten. Toon liever je scherm bij het starten van je initialisatie, en sluit het weer bij het einde ervan. En indien die tijd verwaarloosbaar is, toon dan helemaal geen splash-screen.
Dan lijkt je "My First App" op een heel erg groot softwarepakket als Photoshop :Y)

  • fre0n
  • Registratie: April 2005
  • Laatst online: 12-11 01:56
Reaclame, naamsbekendheid, misschien nuttige info? Er zijn voldoende nuttige redenen te bedenken waarom je een spletjs zou willen hebben. Of het voor deze specifieke toepassing nodig is, is aan de makers...

https://twitch.tv/magus77nl


  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 08:22
schoene schreef op dinsdag 06 februari 2007 @ 15:25:
Ik zou je dan weer afraden een splashscreen te gebruiken: Een splashscreen is nuttig indien het starten van de applicatie een lange initialisatie nodig heeft, zoniet werkt een splashscreen gewoon frustrerend.
Wat is nu het enige nut van dat schermpje daar 3 seconden te tonen? Eenvoudigweg je gebruikers 3 seconden laten wachten. Toon liever je scherm bij het starten van je initialisatie, en sluit het weer bij het einde ervan. En indien die tijd verwaarloosbaar is, toon dan helemaal geen splash-screen.
Volledig mee eens.

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 30-11 00:17
fre0n schreef op dinsdag 06 februari 2007 @ 14:37:
Voor 3 seconden vertraging:


dim tijdtrigger = timer + 3
do: doevents: loop until timer=>tijdtrigger
Weet niet of dit als VB6 bedoeld is maar :

A Je maakt een busyloop
B Er zit een bug in als je het programma om 23:59:58 start

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 17-10 16:43
BertS schreef op dinsdag 06 februari 2007 @ 12:05:
[...]

Als je de timerinterval op 3000 zet, kun je de hele implementatie van iWachten weglaten... Code wordt dan:
Visual Basic .NET:
1
2
3
4
5
Public Class Form1
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Me.Close()
    End Sub
End Class
* roy-t denkt even na..

hehe je hebt gelijk, scheelt weer een regeltje code.
Gorgi_19
Niet? VB.Net werkt netjes met namespaces, zowel bij het Imports als eventueel met het aanspreken van een class inclusief namespace.
Over namespaces, ik kom van vb6 af, toen was dat er nog niet, en heb weinig gedaan in vb.net (ben bezig met C#.net) en zag zo 1,2,3 niet waar ik "using system.timer" neer kon zetten, het werkt inderdaad wel met namespaces tis natuurlijk .net, had ik ook niet even over nagedacht!

~ Mijn prog blog!


Verwijderd

rwb schreef op dinsdag 06 februari 2007 @ 14:01:
Maar met Thread.Sleep blokeer je wel je complete GUI. Stel dat je een window over je splash screen sleept terwijl hij er staat dan wordt hij niet opnieuw getekend.

Ik zou zelf ook gebruik maken van een timer.
Thread.Sleep blokkeert alleen de thread waarin hij wordt aangeroepen en dus niet je complete gui.

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Verwijderd schreef op dinsdag 06 februari 2007 @ 19:36:
[...]


Thread.Sleep blokkeert alleen de thread waarin hij wordt aangeroepen en dus niet je complete gui.
Ja en je Form Load wordt aangeroepen in je GUI thread wat dus je complete GUI zal blokeren.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”

Pagina: 1