# VBForums UtilityBank > UtilityBank - Utilities >  EyeTimer - reduce eye strain

## TheBradish

Now that my job is looking at a computer screen most of the day, my eyesight has gotten noticeably worse due to eye strain.  Someone told me about the "20/20/20 rule" to reduce eye strain:  every 20 minutes, look at something 20 feet away for 20 seconds.  It makes a difference over time, but it's tough to remember.

I built this timer to remind me.  I'm pretty new to VB, so you guys will probably find many ways to improve this.  Please feel free to customize.



```
Public Class Form1
    Dim ToggleF9 As Boolean = False
    Sub Form1Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None
        Me.Height = 132
        Me.KeyPreview = True
        NotifyIcon1.Visible = True
    End Sub
    Private Sub FormBorderTog(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
        If (e.KeyCode = Keys.F9) Then
            ' When F9 is pressed, switch boolean value
            Call Toggle()
        End If
        If ToggleF9 = True Then
            'toggle form border on/off according to boolean value
            Me.FormBorderStyle = Windows.Forms.FormBorderStyle.FixedSingle
            If Timer1.Enabled = True Then
                Me.Height = 200
            Else
                Me.Height = 170
            End If
        Else
            Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None
            If Timer1.Enabled = True Then
                Me.Height = 162
            Else
                Me.Height = 132
            End If
        End If
    End Sub
    Private Sub Toggle()
        'toggle boolean value
        If ToggleF9 = False Then
            ToggleF9 = True
        Else
            ToggleF9 = False
        End If
    End Sub
    Private Sub ButtonStart_Click(sender As Object, e As EventArgs) Handles ButtonStart.Click
        'show progress bar in form when timer is running
        Timer1.Enabled = True
        If Me.FormBorderStyle = Windows.Forms.FormBorderStyle.FixedSingle Then
            Me.Height = 200
        Else
            Me.Height = 162
        End If

    End Sub

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        'increments progress bar until full, then triggers message or beep
        ProgressBar1.PerformStep()
        Timer1.Enabled = False
        Timer1.Dispose()
        If ProgressBar1.Value = ProgressBar1.Maximum Then
            My.Computer.Audio.PlaySystemSound(Media.SystemSounds.Beep)
            If CheckBox1.Checked = False Then
                'click to reset
                MsgBox("Look at something at least 20 feet away for at least 20 seconds.", MsgBoxStyle.MsgBoxSetForeground, "EyeTimer")
                ProgressBar1.Value = 0
                Timer1.Enabled = True
            Else
                '20 second delay for auto-reset
                NotifyIcon1.ShowBalloonTip(20000, "EyeTimer Notification", "Look at something 20 feet away for 20 seconds.", ToolTipIcon.None)
                Timer2.Enabled = True
            End If
        Else
            Timer1.Enabled = True
        End If
    End Sub

    Private Sub ButtonStop_Click(sender As Object, e As EventArgs) Handles ButtonStop.Click
        'stop and reset timer, hide progress bar
        Timer1.Enabled = False
        Timer1.Dispose()
        ProgressBar1.Value = 0
        If Me.FormBorderStyle = Windows.Forms.FormBorderStyle.FixedSingle Then
            Me.Height = 170
        Else
            Me.Height = 132
        End If

    End Sub

    Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
        '20 second delay before auto-reset
        Timer2.Enabled = False
        Timer2.Dispose()
        ProgressBar1.Value = 0
        Timer1.Enabled = True
    End Sub
End Class
```

About half the code here relates to showing/hiding the form border, and resizing; this can easily be removed.  This was just to confound my coworker so he couldn't figure out how to close my application when I leave it running.

----------

