IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

[VB.NET] Comment créer un chronomètre sans timer ??


Sujet :

VB.NET

  1. #1
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut [VB.NET] Comment créer un chronomètre sans timer ??
    Bonjour je cherche à créer un chronomètre sans utiliser les timers de la forme : 00H00min00s
    Merci
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  2. #2
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Peux-tu être plus precis car je ne pense pas que tu veuilles te dispenser d'un des trois timers de .Net, ton souci est-il le design à l'affichage ou réellement le controle sous -jascent
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  3. #3
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    AU fait je voudrais un chronemetre précis et je voudrais cet affichage : 00H00min00s
    Au fait quand je clique sur le bouton "connection" le chrono se declanche et des que je me deconnecte il s'arrete et je voudrais savoir le tps de ma connection en temps réel ( c'est à dire je veux voir les secondes défilées ) et elle doit s'afficher sous la forme ci-haut

    Merci
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  4. #4
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    mais pourquoi ne veux - tu pas utiliser de Timer :
    En fait, il suffit de créer un Timer avec comme intervale 1000 milisecondes ( 1 seconde ) et d'avoir une variable TempsDeConnection que tu incrémente toute les secondes ( il suffit de mettre à 0 lors de la connexion et récupérer la valeur lors de la déconnexion )

    Après, tu pars du principe que
    1 h = 60 min et 1 min = 60 s


  5. #5
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    c'est exactement ce que j'ai fait mais c'est imprecis ( le timer n'est pas tres precis ) y'a des decalage dans les secondes... C'est pour ca que j'aimerais trouver une autre methode !! Et de plus pas l'ecoulement du tps de connexion en tps réel...

    Si vous avez des idées pour d'autres methodes ????

    A+++
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  6. #6
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Citation Envoyé par Aspic
    mais c'est imprecis ( le timer n'est pas tres precis ) y'a des decalage dans les secondes
    Moi ça fait 1 an que je fais des comptes à rebour et etc.. avec un Timer et il n'y a pas d'imprécision, du moins tant que tu fait pas un traitement long dans l'évenement OnTimer ( je me contente de faire un NbSecs-- et c'est ok ).

  7. #7
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    et t'arrive à afficher le resultat comme ca : 00H00min01s, 00H00min02s, 00H00min03s .... 01H30min06s ...
    Si oui alors je suis prenneur.
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  8. #8
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Friend WithEvents LChrono As Label
    Friend WithEvents TChrono As Timer
    Private temps As TimeSpan
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
      Me.TChrono.Interval = 999
      Me.temps = New TimeSpan(0, 0, 0)
      Me.DisplayTime()
      Me.TChrono.Start()
    End Sub
    Private Sub DisplayTime()
      Dim s As String = Me.temps.ToString
      s = Replace(s, ":", "H", 1, 1)
      s = Replace(s, ":", "min", 1, 1)
      s &= "s"
      Me.LChrono.Text = s
    End Sub
    Private Sub TChrono_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles TChrono.Tick
      Me.temps = TimeSpan.op_Addition(Me.temps, New TimeSpan(0, 0, 1))
      Me.DisplayTime()
    End Sub
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  9. #9
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    J'ai corrigé un peu ton code mais y'a encore une erreur :
    L'evenement tick est introuvable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Friend WithEvents LChrono As Label
        Friend WithEvents TChrono As System.Timers.Timer
        Private temps As TimeSpan
        Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
            Me.TChrono = New System.Timers.Timer
            Me.TChrono.interval = 999
            Me.temps = New TimeSpan(0, 0, 0)
            Me.DisplayTime()
            Me.TChrono.Start()
     
        End Sub
        Private Sub DisplayTime()
            Dim s As String = Me.temps.ToString
            s = Replace(s, ":", "H", 1, 1)
            s = Replace(s, ":", "min", 1, 1)
            s &= "s"
            Me.LChrono.Text = s
        End Sub
        Private Sub TChrono_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles TChrono.tick
            Me.temps = TimeSpan.op_Addition(Me.temps, New TimeSpan(0, 0, 1))
            Me.DisplayTime()
        End Sub
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  10. #10
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    C'esty bon j'ai trouver ^^
    Merci Neguib !!

    Pour ceux que ca interesse voici le code correcte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
        Friend WithEvents TChrono As System.Timers.Timer
        Private temps As TimeSpan
        Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
            Me.TChrono = New System.Timers.Timer
            Me.TChrono.Interval = 999
            Me.TChrono.AutoReset = True
            Me.TChrono.Enabled = True
            Me.temps = New TimeSpan(0, 0, 0)
            Me.TChrono.Start()
        End Sub
        Private Sub DisplayTime()
            Dim s As String = Me.temps.ToString
            s = Replace(s, ":", "H", 1, 1)
            s = Replace(s, ":", "min", 1, 1)
            s &= "s"
            Label2.Text = s
        End Sub
        Private Sub TChrono_Elapsed(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs) Handles TChrono.Elapsed
            Me.temps = TimeSpan.op_Addition(Me.temps, New TimeSpan(0, 0, 1))
            Me.DisplayTime()
        End Sub
    +++
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  11. #11
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par Aspic
    J'ai corrigé un peu ton code mais y'a encore une erreur :
    Citation Envoyé par Aspic
    voici le code correcte :
    si je te dis que mon code fonctionne c'est qu'il y a une excellente raison
    Qu'as-tu fait à part ajouter dans le load ce qui normalement se trouve dans InitializeComponent je te croyais moins débutant que çà, là c'est sûr je me suis bien gourré
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  12. #12
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    1) Je suis effectivement débutant mais j'espere que ca ne te derange pas...
    2) L'evenement tick de ton code n'existais pas, je l'ai donc remplacer par un evenement elapsed
    3) Le "Me.TChrono = New System.Timers.Timer" ne se trouve pas dans le InitializeComponent en tout cas pas chez moi.
    4) Le me.DisplayTime() dans l'evenemetn Form_Load provoque un bug chez moi.
    5) J'ai rajouter un Me.TChrono.AutoReset = True de telle sorte que l'evenement elapsed ne se produise pas qu'une seule fois

    Voila en tout cas merci quand meme pour ton aide

    PS: En aucun cas je n'est critiqué ton code
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  13. #13
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par Aspic
    1) Je suis effectivement débutant mais j'espere que ca ne te derange pas...
    pas du tout mais apparemment tu n'en tire pas conclusion
    Il y a 3 types de Timers, le plus couramment utilsé sur une Form est le System.Windows.Forms.Timer qui a bien evidemment l'evenement Tick. T'es assez grand pour conclure le reste. En faisant une petite recherche sur le forum tu aurais pû tomber sur plusieurs posts ou j'explique déjà cela en long et en large
    As-tu accès à une doc MSDN ? si non je te suggères de paramétrer une page google dédiée à celà afin de faciliter tes recherches: (à mettre dans tes favoris)
    MSDN en anglais
    MSDN en français (1.0 et 1.1)
    MSDN (2.0)

    Mon code était effectivement un minimum, je ne pensais pas qu'il fallait tout t'expliquer y compris comment instancier une variable donc voilà tout le code de la page Test que j'avais fait pour te confirmer mes dires.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    Option Explicit On 
    Option Strict On
    Imports System
    Imports System.Diagnostics
    Imports System.ComponentModel
    Imports System.Windows.Forms
    Public Class Form1
      Inherits System.Windows.Forms.Form
      Private temps As TimeSpan
      Public Sub New()
        MyBase.New()
        Me.InitializeComponent()
      End Sub
      Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then If Not (components Is Nothing) Then components.Dispose()
        MyBase.Dispose(disposing)
      End Sub
      Private components As IContainer
      Friend WithEvents Bchrono As Button
      Friend WithEvents LChrono As Label
      Friend WithEvents TChrono As Timer
      <DebuggerStepThrough()> Private Sub InitializeComponent()
         Me.components = New System.ComponentModel.Container()
         Me.LChrono = New System.Windows.Forms.Label()
         Me.Bchrono = New System.Windows.Forms.Button()
         Me.TChrono = New System.Windows.Forms.Timer(Me.components)
         Me.SuspendLayout()
         Me.LChrono.Font = New System.Drawing.Font("Bitstream Vera Sans", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
         Me.LChrono.Location = New System.Drawing.Point(8, 16)
         Me.LChrono.Name = "LChrono"
         Me.LChrono.Size = New System.Drawing.Size(128, 23)
         Me.LChrono.TabIndex = 0
         Me.LChrono.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
         Me.Bchrono.Location = New System.Drawing.Point(176, 16)
         Me.Bchrono.Name = "Bchrono"
         Me.Bchrono.TabIndex = 1
         Me.Bchrono.Tag = True
         Me.Bchrono.Text = "Stop"
         Me.TChrono.Interval = 999
         Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
         Me.ClientSize = New System.Drawing.Size(292, 273)
         Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.Bchrono, Me.LChrono})
         Me.Name = "Form1"
         Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
         Me.Text = "Form1"
         Me.ResumeLayout(False)
      End Sub
      Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
         Me.temps = New TimeSpan(0, 0, 0)
         Me.DisplayTime()
         Me.TChrono.Start()
     End Sub
     Private Sub DisplayTime()
         Dim s As String = Me.temps.ToString
         s = Replace(s, ":", "H", 1, 1)
         s = Replace(s, ":", "min", 1, 1)
         s &= "s"
         Me.LChrono.Text = s
     End Sub
     Private Sub TChrono_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles TChrono.Tick
         Me.temps = TimeSpan.op_Addition(Me.temps, New TimeSpan(0, 0, 1))
         Me.DisplayTime()
     End Sub
     Private Sub Bchrono_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Bchrono.Click
         Dim b As Button = CType(sender, Button)
         Dim bool As Boolean = CType(b.Tag, Boolean)
         If bool Then
             Me.TChrono.Stop()
             b.Text = "Start"
         Else
             Me.TChrono.Start()
             b.Text = "Stop"
         End If
         b.Tag = Not bool
     End Sub
    End Class
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  14. #14
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    ok pas de probleme
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.Net] Comment créer dynamiquement un contrôle bouton ?
    Par robert.michel9 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 19/01/2006, 13h49
  2. [VB.Net] Comment créer un fichier .mdb ?
    Par smedini dans le forum Accès aux données
    Réponses: 6
    Dernier message: 31/12/2005, 10h56
  3. Réponses: 4
    Dernier message: 24/03/2005, 19h20
  4. [VB.NET] Comment créer boutons windows???
    Par fdiedler dans le forum Windows Forms
    Réponses: 11
    Dernier message: 21/02/2005, 18h57
  5. [VB.NET] Comment créer un aboutBox ?
    Par mpascolo dans le forum Windows Forms
    Réponses: 3
    Dernier message: 06/01/2005, 13h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo