Multiple Form Problem in VB

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • jhop
    New Member
    • Apr 2008
    • 1

    #1

    Multiple Form Problem in VB

    Hello everyone,

    I am having a slight problem with a program i am working on for a class, I am using Visual Studio 2005. The program only allows the up arrow key as input. In the code it is set up that one tap of the key will highlight (change the back color) of the next button, and that a double tap of the key will be like a mouse click and select that button. Most of the buttons will lead to new forms being displayed. At the moment I only have two forms (frmMain, and frmCreate). The button presses work fine on frmMain and i can switch to frmCreate and hide frmMain fine, the problem is that on frmCreate nothing is happening. Everytime i press the up key it does not highlight the next button, but if i tap enough times to get to the Quit button and double tap it closes just fine, so i think it is working but not changing the color.

    ok here is the code so far for frmMain:
    Code:
    Public Class frmMain
        Implements IMessageFilter
    
        Const WM_KEYDOWN As Integer = &H100
        Dim clickCount As Integer = 0
    
        Private Sub tmrMain_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrMain.Tick
            Me.tmrMain.Stop()
    
            If (clickCount >= 1) Then
    
                If (clickCount = 1) Then 'SINGLE "click"
                    If btnCreate.BackColor = Color.FromKnownColor(KnownColor.GradientActiveCaption) Then
                        btnCreate.BackColor = Color.FromKnownColor(KnownColor.Control)
                        btnOpen.BackColor = Color.FromKnownColor(KnownColor.GradientActiveCaption)
                    ElseIf btnOpen.BackColor = Color.FromKnownColor(KnownColor.GradientActiveCaption) Then
                        btnOpen.BackColor = Color.FromKnownColor(KnownColor.Control)
                        btnSearch.BackColor = Color.FromKnownColor(KnownColor.GradientActiveCaption)
                    ElseIf btnSearch.BackColor = Color.FromKnownColor(KnownColor.GradientActiveCaption) Then
                        btnSearch.BackColor = Color.FromKnownColor(KnownColor.Control)
                        btnHelp.BackColor = Color.FromKnownColor(KnownColor.GradientActiveCaption)
                    ElseIf btnHelp.BackColor = Color.FromKnownColor(KnownColor.GradientActiveCaption) Then
                        btnHelp.BackColor = Color.FromKnownColor(KnownColor.Control)
                        btnQuit.BackColor = Color.FromKnownColor(KnownColor.GradientActiveCaption)
                    ElseIf btnQuit.BackColor = Color.FromKnownColor(KnownColor.GradientActiveCaption) Then
                        btnQuit.BackColor = Color.FromKnownColor(KnownColor.Control)
                        btnCreate.BackColor = Color.FromKnownColor(KnownColor.GradientActiveCaption)
                    End If
                ElseIf (clickCount > 1) Then ' DOUBLE "click"
                    If btnCreate.BackColor = Color.FromKnownColor(KnownColor.GradientActiveCaption) Then
                        Me.Hide()
                        frmCreate.Show()
                    ElseIf btnOpen.BackColor = Color.FromKnownColor(KnownColor.GradientActiveCaption) Then
    
                    ElseIf btnSearch.BackColor = Color.FromKnownColor(KnownColor.GradientActiveCaption) Then
    
                    ElseIf btnHelp.BackColor = Color.FromKnownColor(KnownColor.GradientActiveCaption) Then
    
                    ElseIf btnQuit.BackColor = Color.FromKnownColor(KnownColor.GradientActiveCaption) Then
                        Me.Close()
                        Application.ExitThread()
                    End If
    
                End If
            End If
    
            clickCount = 0
            Me.tmrMain.Start()
        End Sub
    
        Public Function HandleKeys(ByVal keyCode As Keys) As Boolean
            Dim ret As Boolean = True
    
            Me.tmrMain.Stop()
    
            Select Case keyCode
                Case Keys.Up
                    clickCount += 1
            End Select
    
            Me.tmrMain.Start()
    
            Return ret
    
        End Function
    
        Public Function PreFilterMessage(ByRef m As Message) As Boolean _
        Implements IMessageFilter.PreFilterMessage
    
            Dim k As System.Windows.Forms.Keys = m.WParam
    
            If (m.Msg = WM_KEYDOWN) Then
                Return HandleKeys(k)
            Else
                Return False
            End If
    
        End Function
    
        Public Sub New()
            InitializeComponent()
            Application.AddMessageFilter(Me)
        End Sub
    
    End Class
    and the code for frmCreate:
    Code:
    Public Class frmCreate
        Implements IMessageFilter
    
        Const WM_KEYDOWN As Integer = &H100
        Dim clickCount As Integer = 0
    
        Private Sub tmrCreate_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrCreate.Tick
            Me.tmrCreate.Stop()
    
            If (clickCount >= 1) Then
    
                If (clickCount = 1) Then 'SINGLE "click"
                    If btnCreateNote.BackColor = Color.FromKnownColor(KnownColor.GradientActiveCaption) Then
                        btnCreateNote.BackColor = Color.FromKnownColor(KnownColor.Control)
                        btnCreateCat.BackColor = Color.FromKnownColor(KnownColor.GradientActiveCaption)
                    ElseIf btnCreateCat.BackColor = Color.FromKnownColor(KnownColor.GradientActiveCaption) Then
                        btnCreateCat.BackColor = Color.FromKnownColor(KnownColor.Control)
                        btnCreateAtt.BackColor = Color.FromKnownColor(KnownColor.GradientActiveCaption)
                    ElseIf btnCreateAtt.BackColor = Color.FromKnownColor(KnownColor.GradientActiveCaption) Then
                        btnCreateAtt.BackColor = Color.FromKnownColor(KnownColor.Control)
                        btnCreateHelp.BackColor = Color.FromKnownColor(KnownColor.GradientActiveCaption)
                    ElseIf btnCreateHelp.BackColor = Color.FromKnownColor(KnownColor.GradientActiveCaption) Then
                        btnCreateHelp.BackColor = Color.FromKnownColor(KnownColor.Control)
                        btnCreateBack.BackColor = Color.FromKnownColor(KnownColor.GradientActiveCaption)
                    ElseIf btnCreateBack.BackColor = Color.FromKnownColor(KnownColor.GradientActiveCaption) Then
                        btnCreateBack.BackColor = Color.FromKnownColor(KnownColor.Control)
                        btnCreateQuit.BackColor = Color.FromKnownColor(KnownColor.GradientActiveCaption)
                    ElseIf btnCreateQuit.BackColor = Color.FromKnownColor(KnownColor.GradientActiveCaption) Then
                        btnCreateQuit.BackColor = Color.FromKnownColor(KnownColor.Control)
                        btnCreateNote.BackColor = Color.FromKnownColor(KnownColor.GradientActiveCaption)
                    End If
                ElseIf (clickCount > 1) Then ' DOUBLE "click"
                    If btnCreateNote.BackColor = Color.FromKnownColor(KnownColor.GradientActiveCaption) Then
    
                    ElseIf btnCreateCat.BackColor = Color.FromKnownColor(KnownColor.GradientActiveCaption) Then
    
                    ElseIf btnCreateAtt.BackColor = Color.FromKnownColor(KnownColor.GradientActiveCaption) Then
    
                    ElseIf btnCreateHelp.BackColor = Color.FromKnownColor(KnownColor.GradientActiveCaption) Then
    
                    ElseIf btnCreateBack.BackColor = Color.FromKnownColor(KnownColor.GradientActiveCaption) Then
                        frmMain.Show()
                        Me.Close()
                    ElseIf btnCreateQuit.BackColor = Color.FromKnownColor(KnownColor.GradientActiveCaption) Then
                        Me.Close()
                        Application.ExitThread()
                    End If
    
                End If
            End If
    
            clickCount = 0
            Me.tmrCreate.Start()
        End Sub
    
        Public Function HandleKeys(ByVal keyCode As Keys) As Boolean
            Dim ret As Boolean = True
    
            Me.tmrCreate.Stop()
    
            Select Case keyCode
                Case Keys.Up
                    clickCount += 1
            End Select
    
            Me.tmrCreate.Start()
    
            Return ret
    
        End Function
    
        Public Function PreFilterMessage(ByRef m As Message) As Boolean _
        Implements IMessageFilter.PreFilterMessage
    
            Dim k As System.Windows.Forms.Keys = m.WParam
    
            If (m.Msg = WM_KEYDOWN) Then
                Return HandleKeys(k)
            Else
                Return False
            End If
    
        End Function
    
        Public Sub New()
            InitializeComponent()
            Application.AddMessageFilter(Me)
        End Sub
    
    End Class
    Thanks in advance for your help
Working...