simple vb.net timer question

Started by
1 comment, last by gamechampionx 18 years, 10 months ago
Here is my program codes:

Public Class main
    Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "

    Public Sub New()
        MyBase.New()

        'This call is required by the Windows Form Designer.
        InitializeComponent()

        'Add any initialization after the InitializeComponent() call

    End Sub

    'Form overrides dispose to clean up the component list.
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)
    End Sub

    'Required by the Windows Form Designer
    Private components As System.ComponentModel.IContainer

    'NOTE: The following procedure is required by the Windows Form Designer
    'It can be modified using the Windows Form Designer.  
    'Do not modify it using the code editor.
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        '
        'main
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
        Me.ClientSize = New System.Drawing.Size(292, 273)
        Me.FormBorderstyle = System.Windows.Forms.FormBorderstyle.Fixed3D
        Me.MaximizeBox = False
        Me.Name = "main"
        Me.Text = "Demo"
        Me.WindowState = System.Windows.Forms.FormWindowState.Maximized

    End Sub

#End Region

    Private mainMenu As System.Windows.Forms.MainMenu
    Private mnuGame As System.Windows.Forms.MenuItem
    Private mnuGameNew As System.Windows.Forms.MenuItem
    Private mnuGameDiv As System.Windows.Forms.MenuItem
    Private WithEvents mnuGameExit As System.Windows.Forms.MenuItem

    Private grid(,) As Integer
    Private preview() As Integer
    Private score As Integer

    Private gridBox(,) As System.Windows.Forms.PictureBox
    Private previewBox() As System.Windows.Forms.PictureBox
    Private scoreTitleLabel As System.Windows.Forms.Label
    Private scoreLabel As System.Windows.Forms.Label

    Private timer As System.Timers.Timer

    Private Sub main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        createGrid()
        createPreview()
        addMenu()
        resetScore()
        startTimer()
    End Sub

    Shared Sub Main()
        Application.Run(New main)
    End Sub

    Private Sub main_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
        End
    End Sub

    Private Sub addMenu()
        mainMenu = New System.Windows.Forms.MainMenu
        mnuGame = New System.Windows.Forms.MenuItem("Game")
        mnuGameNew = New System.Windows.Forms.MenuItem("New")
        mnuGame.MenuItems.Add(mnuGameNew)
        mnuGameDiv = New System.Windows.Forms.MenuItem("-")
        mnuGame.MenuItems.Add(mnuGameDiv)
        mnuGameExit = New System.Windows.Forms.MenuItem("Exit")
        mnuGame.MenuItems.Add(mnuGameExit)
        mainMenu.MenuItems.Add(mnuGame)
        Menu = mainMenu
    End Sub

    Private Sub createGrid()
        Erase grid
        ReDim grid(9, 9)
        Dim heightIndex As Integer
        Dim widthIndex As Integer
        For heightIndex = 0 To UBound(grid, 1) - 1
            For widthIndex = 0 To UBound(grid, 2) - 1
                grid(heightIndex, widthIndex) = 0
            Next
        Next
    End Sub

    Private Sub createPreview()
        Erase preview
        Erase previewBox
        ReDim preview(2)
        ReDim previewBox(2)
    End Sub

    Private Sub resetScore()
        score = 0
    End Sub

    Private Sub startTimer()
        timer = New System.Timers.Timer
        AddHandler timer.Elapsed, AddressOf timerTriggered
        timer.Interval = 1000
        MsgBox(timer.Interval.ToString)
    End Sub

    Private Sub subMnuGameExit(ByVal sender As Object, ByVal e As EventArgs) Handles mnuGameExit.Click
        End
    End Sub

    Private Sub main_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
        Dim bitmap As System.Drawing.Bitmap
        bitmap = New Bitmap(Me.ClientRectangle.Width, Me.ClientRectangle.Height)
        Dim graphics As System.Drawing.Graphics
        graphics = graphics.FromImage(bitmap)
        Dim boxPen As System.Drawing.Pen
        boxPen = New Pen(System.Drawing.Color.Gray, 3)
        Dim rectangle As System.Drawing.Rectangle
        rectangle = New System.Drawing.Rectangle(CInt(0.3 * (Me.ClientRectangle.Width - 1)), CInt(0.1 * (Me.ClientRectangle.Height - 1)), CInt(0.5 * (Me.ClientRectangle.Width + 1)), CInt(0.8 * (Me.ClientRectangle.Height + 1)))
        Me.CreateGraphics.DrawRectangle(boxPen, rectangle)
        Dim heightIndex As Integer
        For heightIndex = 0 To 2
            preview(heightIndex) = 0
            previewBox(heightIndex) = New System.Windows.Forms.PictureBox
            previewBox(heightIndex).Width = CInt(0.1 * (Me.ClientRectangle.Width - 1))
            previewBox(heightIndex).Height = CInt(0.1 * (Me.ClientRectangle.Height - 1))
            previewBox(heightIndex).Left = CInt(0.05 * (Me.ClientRectangle.Width + 1))
            previewBox(heightIndex).Top = CInt(0.1 * (Me.ClientRectangle.Height + 1) + heightIndex * previewBox(heightIndex).Height)
            previewBox(heightIndex).BackColor = System.Drawing.Color.Black
            Me.Controls.Add(previewBox(heightIndex))
        Next
        scoreTitleLabel = New System.Windows.Forms.Label
        scoreTitleLabel.Width = CInt(0.1 * (Me.ClientRectangle.Width - 1))
        scoreTitleLabel.Height = CInt(0.1 * (Me.ClientRectangle.Height - 1))
        scoreTitleLabel.Left = CInt(0.8 * (Me.ClientRectangle.Width + 1))
        scoreTitleLabel.Top = CInt(0.1 * (Me.ClientRectangle.Height + 1))
        Dim family As System.Drawing.FontFamily
        family = New System.Drawing.FontFamily("Microsoft Sans Serif")
        Dim size As Integer
        size = 12
        scoreTitleLabel.AutoSize = True
        scoreTitleLabel.BackColor = System.Drawing.Color.Transparent
        scoreTitleLabel.Font = New System.Drawing.Font(family, size)
        scoreTitleLabel.Text = "Score"
    End Sub

    Private Sub timerTriggered(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs)
        MsgBox("timer triggered")
    End Sub

End Class
The messagbox with the timer's interval shows, but the timer never triggers. Why does this happen? Also, should I add events to my menus using WithEvents and use event registering with my timer or is there a good way to handle these both in the same way?
Check out Drunken Brawl at http://www.angelfire.com/games6/drunken_brawl!
Advertisement
Well, concerning your Timer not being triggered - you have to
start it after setting it up. Just call Timer1.Start() after setting it up ...

Private Sub startTimer()
timer = New System.Timers.Timer
AddHandler timer.Elapsed, AddressOf timerTriggered
timer.Interval = 1000
timer.Start() ' *** Just add this line ***
MsgBox(timer.Interval.ToString)
End Sub
Ok, thanks.
Check out Drunken Brawl at http://www.angelfire.com/games6/drunken_brawl!

This topic is closed to new replies.

Advertisement