VB Tutor VB.NET 2022 Tutorial VB2019 Tutorial VB6 Tutorial VB Sample Code About Us
Visual Basic Sample Code

Digital Stopwatch

VB6 and VB.NET implementation with interactive demo


About the Digital Stopwatch

This digital stopwatch application demonstrates how to create a functional timer with multiple modes (stopwatch, clock, and date display) using Visual Basic. The application features:

Stopwatch Mode

Precision timing with start, stop, and reset controls

Clock Mode

Real-time display of the current time

Date Mode

Current date display

Mode Switching

Easy transition between different display modes

We'll explore both VB6 and VB.NET implementations of this application, highlighting the differences and similarities between the two versions.

Interactive Stopwatch Demo

Stopwatch
Clock
Date
00:00:00.00

VB6 vs. VB.NET Implementation

While the core functionality is similar in both VB6 and VB.NET, there are important differences in how timers are implemented and how the UI is managed.

Feature VB6 Implementation VB.NET Implementation
Timer Component Timer control with Interval property (1 = 1ms) System.Windows.Forms.Timer with Interval property (1 = 1ms)
Time Calculation Manual calculation using multiple variables TimeSpan structure for easier time calculations
UI Elements Label for display, Command Buttons for controls Label for display, Button controls for actions
Event Handling Timer_Timer event for stopwatch, Timer2 for clock Single Timer with Tick event for all timing needs
Date/Time Display Date function for date, Time function for clock DateTime.Now property for both date and time
Code Structure Procedural with global variables More object-oriented with local variables

Code Implementation

VB6 Code
VB.NET Code

VB6 Stopwatch Implementation

Dim a As String
Dim b As String
Dim c As String
Dim x As String
Dim y As String
Dim z As String
Dim u As String
Dim v As String

Private Sub Form_Load()
    ResetDisplay
End Sub

Private Sub clock_Click()
    Timer1.Enabled = False
    Timer2.Enabled = True
End Sub

Private Sub date_Click()
    Label1.Caption = Date
    Timer2.Enabled = False
End Sub

Private Sub stopwc_Click()
    Timer2.Enabled = False
    ResetDisplay
End Sub

Private Sub Command1_Click() ' Start
    Timer1.Enabled = True
    Timer1.Interval = 1
End Sub

Private Sub Command2_Click() ' Stop
    Timer1.Enabled = False
End Sub

Private Sub Command3_Click() ' Reset
    Timer1.Enabled = False
    ResetDisplay
End Sub

Private Sub Timer1_Timer()
    counttime
End Sub

Private Sub Timer2_Timer()
    Label1.Caption = Time
End Sub

Sub counttime()
    If Val(v) < 9 Then
        v = v + 1
    ElseIf Val(u) < 9 Then
        v = 0
        u = u + 1
    ElseIf Val(z) < 9 Then
        v = 0
        u = 0
        z = z + 1
    ElseIf Val(y) < 5 Then
        v = 0
        u = 0
        z = 0
        y = y + 1
    ElseIf Val(x) < 9 Then
        v = 0
        u = 0
        z = 0
        y = 0
        x = x + 1
    ElseIf Val(c) < 5 Then
        v = 0
        u = 0
        z = 0
        y = 0
        x = 0
        c = c + 1
    ElseIf Val(b) < 9 Then
        v = 0
        u = 0
        z = 0
        y = 0
        x = 0
        c = 0
        b = b + 1
    ElseIf Val(a) < 9 Then
        v = 0
        u = 0
        z = 0
        y = 0
        x = 0
        c = 0
        b = 0
        a = a + 1
    End If
    
    Label1.Caption = a & b & ":" & c & x & ":" & y & z & "." & u & v
End Sub

Sub ResetDisplay()
    a = "0": b = "0": c = "0": x = "0"
    y = "0": z = "0": u = "0": v = "0"
    Label1.Caption = a & b & ":" & c & x & ":" & y & z & "." & u & v
End Sub

VB.NET Stopwatch Implementation

Public Class StopwatchForm
    Private stopwatch As New Stopwatch()
    Private elapsedTime As TimeSpan = TimeSpan.Zero
    
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ResetDisplay()
    End Sub
    
    Private Sub clockBtn_Click(sender As Object, e As EventArgs) Handles clockBtn.Click
        Timer1.Stop()
        displayLabel.Text = DateTime.Now.ToString("HH:mm:ss")
    End Sub
    
    Private Sub dateBtn_Click(sender As Object, e As EventArgs) Handles dateBtn.Click
        Timer1.Stop()
        displayLabel.Text = DateTime.Now.ToString("yyyy-MM-dd")
    End Sub
    
    Private Sub stopwatchBtn_Click(sender As Object, e As EventArgs) Handles stopwatchBtn.Click
        Timer1.Stop()
        ResetDisplay()
    End Sub
    
    Private Sub startBtn_Click(sender As Object, e As EventArgs) Handles startBtn.Click
        If Not stopwatch.IsRunning Then
            stopwatch.Start()
            Timer1.Start()
        End If
    End Sub
    
    Private Sub stopBtn_Click(sender As Object, e As EventArgs) Handles stopBtn.Click
        If stopwatch.IsRunning Then
            stopwatch.Stop()
            elapsedTime = stopwatch.Elapsed
            Timer1.Stop()
        End If
    End Sub
    
    Private Sub resetBtn_Click(sender As Object, e As EventArgs) Handles resetBtn.Click
        stopwatch.Reset()
        elapsedTime = TimeSpan.Zero
        ResetDisplay()
    End Sub
    
    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        elapsedTime = stopwatch.Elapsed
        displayLabel.Text = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
                                         elapsedTime.Hours, elapsedTime.Minutes,
                                         elapsedTime.Seconds, elapsedTime.Milliseconds \ 10)
    End Sub
    
    Private Sub ResetDisplay()
        displayLabel.Text = "00:00:00.00"
    End Sub
End Class

Key Differences Between VB6 and VB.NET

Timer Precision

VB6 timers have limited precision (~55ms), while VB.NET has more accurate timing

Object Model

VB.NET uses a more modern, object-oriented approach

Syntax

VB.NET has more consistent syntax and better type handling

Built-in Features

VB.NET includes the Stopwatch class for precise timing

Tip: For new development, VB.NET is recommended as it's actively maintained and has modern features. However, understanding VB6 is valuable for maintaining legacy applications.