none
如何在MDI Form如何作快速鍵 RRS feed

  • 問題

  • MDI Form 沒有KeyPreview

    目前在MDI 上放置一個Picture 並在上放入一個Command

    想讓User 按下F5的按鍵去觸發Command_Click, 我該如何個

     

    2007年9月30日 上午 02:19

解答

  • :::參考看看

    Public Class Form1
        Implements System.Windows.Forms.IMessageFilter

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            MessageBox.Show("ABC")
        End Sub

        Public Function PreFilterMessage(ByRef m As System.Windows.Forms.Message) As Boolean Implements System.Windows.Forms.IMessageFilter.PreFilterMessage
            Dim keyCode As Keys = CType(m.WParam.ToInt32(), Keys) And Keys.KeyCode
            If keyCode = Keys.F5 Then
                Button1.PerformClick()
            End If
        End Function

        Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Application.AddMessageFilter(Me)
        End Sub
    End Class

    2007年9月30日 下午 01:52

所有回覆

  • HI,

     

    MDI FORM很難做到這個功能, 建議將功能製作在一個普通的FORM上, 程式執行的時候顯示普通的FORM, 蓋住MDI FORM, 再將PictureBox貼在普通的FORM上

     

    tihs

     

    2007年9月30日 上午 06:39
  • 我目前是用一個Timer來控制的

    當已經沒有MDI Child開啟時,就把Picture的Focus設成True

    然後就寫在Picture 的KeyDown事件中

     

    謝謝囉

     

     

    2007年9月30日 下午 12:15
  • :::參考看看

    Public Class Form1
        Implements System.Windows.Forms.IMessageFilter

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            MessageBox.Show("ABC")
        End Sub

        Public Function PreFilterMessage(ByRef m As System.Windows.Forms.Message) As Boolean Implements System.Windows.Forms.IMessageFilter.PreFilterMessage
            Dim keyCode As Keys = CType(m.WParam.ToInt32(), Keys) And Keys.KeyCode
            If keyCode = Keys.F5 Then
                Button1.PerformClick()
            End If
        End Function

        Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Application.AddMessageFilter(Me)
        End Sub
    End Class

    2007年9月30日 下午 01:52
  • 請問以上的程式碼是否為.Net

    因為我用的是Visual Basic 6所以好像沒法用,還是我有誤解你的意思呢?

    2007年9月30日 下午 02:22
  • :::喔,這是.Net的程式,小女子沒看到你是用Command_Click ........^^''

    2007年9月30日 下午 02:24
  • ...

    本版公告這篇看過沒?

    張貼文章應注意事項及應提供資訊

    2007年9月30日 下午 04:15
    版主