none
[VB2005] 再視窗內鍵入連續按鍵設計彈出視窗的做法 RRS feed

  • 問題

  • 各位老師好

     

    今天我想在我的程式內

    再主表單畫面上按下鍵盤1+3+5 鍵 ,就彈出一個msgbox("hi") 的MsgBox

     

    請問該怎麼做呢?

     

     

    謝謝老師

    2008年11月13日 上午 02:29

解答

  • 把Form的KeyPreview屬性設定起來,之後鍵盤事件就會先傳給Form,之後再傳給該控制項;不過你如果要1+3+5這會有困難喔,一般按鍵的觸發事件都是一個按鍵一個按鍵來觸發,在事件中不會知道1、3、5同時被按下;要改用功能鍵(例如Ctrl或是Alt)會比較容易。

     

    2008年11月13日 上午 02:38
    版主

所有回覆

  • 把Form的KeyPreview屬性設定起來,之後鍵盤事件就會先傳給Form,之後再傳給該控制項;不過你如果要1+3+5這會有困難喔,一般按鍵的觸發事件都是一個按鍵一個按鍵來觸發,在事件中不會知道1、3、5同時被按下;要改用功能鍵(例如Ctrl或是Alt)會比較容易。

     

    2008年11月13日 上午 02:38
    版主
  • 了解

     

    謝謝老師

     

    我改用Ctrl +Alt+1  好了

     

    2008年11月13日 上午 02:56
  • 試試這樣行不行...

        Dim xx As New ArrayList
        Dim yy() As Keys = {Keys.D1, Keys.D3, Keys.D5}
        Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
            If Array.IndexOf(yy, e.KeyCode) >= 0 AndAlso xx.Contains(e.KeyCode) = False Then xx.Add(e.KeyCode)
            If xx.Count = 3 Then MsgBox("hi") : xx.Clear()
        End Sub

        Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp
            xx.Clear()
        End Sub

    2008年11月13日 上午 06:02