2012-02-13 60 views
0

私の特定のプログラム用に定義されたショートカットで特定のコードを実行したい。たとえば、F1またはCtrl + Cをクリックした場合、私のプログラムは顧客リストを表示します。私は次のコードでフォームのkeydownイベントを試みましたvb.netでショートカットキーを作成する方法

If e.KeyCode = Keys.F1 Then 
    Form6.button4.performclick() 
End If 

これはうまくいかないようです。誰もがこれで私を助けることができますか?

私は

+1

あなたの名前はひどいです。どのように誰がフォーム#6のボタン#4が何をしているのか知っていますか? –

+1

'F1'はWindowsのヘルプとして予約されています。 'Ctrl + C 'は通常'クリップボードのコピー'のために使われます。これらの特定の重要な選択肢は、おそらく悪い考えです。 –

+0

私は 'O'や 'F4'のような他のキーも試しましたが、これもうまくいきません...Form6は顧客を表示するフォームであり、button4 clickイベントには顧客リストを印刷するコードが含まれています – user944591

答えて

1

How to Capture Shortcut Keys in Visual Studio .NETは、いくつかのVBの例があります私のアプリケーションを開発するためのVisual Studio 2005年にvb.netを使用しています。

+0

リンクが消滅する傾向があるので、内容はあなたの答えに入れてください。 – mbomb007

0

ショートカットのメニューを追加し、各ショートカットのメニュー項目を追加してから、ショートカットをメニュー項目にバインドすることで、ショートカットを実装することをお勧めします。利用可能なショートカットが文書化され、コーディングが非常に簡単になるため、これは素晴らしいことです。

2

"アクセスキーは、メニュー、メニュー項目、またはボタンなどのコントロールのラベルにある下線付きの文字です。アクセスキーを使用すると、ユーザーはAltキーたとえば、ボタンがフォームを印刷するプロシージャを実行し、そのTextプロパティが "Print"に設定されている場合、文字 "P"が文字 "P"の前にアンパサンドを追加すると、実行時にボタンテキストに下線を引くことができます。ユーザーは、Alt + Pキーを押すと、ボタンに関連付けられたコマンドを実行できます。フォーカスを受け取れないコントロールのアクセスキーを持つことはできません。

Access Keys

アクセスキーを試してみてください?

0

あなたのコードが正しいですが、あなたはこの試してみてください、あなたのフォームに

4

keyPreview = trueを設定する必要があります:あなたは、独自のイベントを作成する方がよいとそれを上げるだろう、が

Private Sub frmCustomerDetails_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    ' When the form loads, the KeyPreview property is set to True. 
    ' This lets the form capture keyboard events before 
    ' any other element in the form. 
    Me.KeyPreview = True 
End Sub 

    Private Sub frmCustomerDetails_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown 
    If (e.Alt AndAlso (e.KeyCode = Keys.P)) Then 
     ' When Alt + P is pressed, the Click event for the print 
     ' button is raised. 
     RaiseEvent btnPrintCustomerDetails.Click 
    End If 
End Sub 

Source

をボタンのクリックイベントを発生させるのではなく、

0

回答が表示されていましたが、これはかなり古いですが、これを試してみてください。ホットキーは、示されているようにalt + dまたはalt + cに設定されています。彼らがあなたに与えているものと私があなたに与えているものの間のこのコードの違いは、アプリケーションが最小限に抑えられているときでさえ、これが機能するということです。ここで

Public Const MOD_ALT As Integer = &H1   'Alt key 
Public Const WM_HOTKEY As Integer = &H312  ' 


<DllImport("User32.dll")> _ 
Public Shared Function RegisterHotKey(ByVal hwnd As IntPtr, ByVal id As Integer, ByVal fsModifiers As Integer, ByVal vk As Integer) As Integer 
End Function 

<DllImport("User32.dll")> _ 
Public Shared Function UnregisterHotKey(ByVal hwnd As IntPtr, ByVal id As Integer) As Integer 
End Function 

Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message) 
    If m.Msg = WM_HOTKEY Then 
     Dim id As IntPtr = m.WParam 
     Select Case (id.ToString) 
      Case "100" 
       MessageBox.Show("You pressed ALT+D key combination") 
      Case "200" 
       MessageBox.Show("You pressed ALT+C key combination") 
     End Select 
    End If 
    MyBase.WndProc(m) 
End Sub 

Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing 
    UnregisterHotKey(Me.Handle, 100) 
    UnregisterHotKey(Me.Handle, 200) 
End Sub 


Private Sub Form_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 
    RegisterHotKey(Me.Handle, 100, MOD_ALT, Keys.D) 
    RegisterHotKey(Me.Handle, 200, MOD_ALT, Keys.C) 
end sub 
+0

"Amen Ayach"あなたの正しい。それは必要であり、見落としには申し訳ありません。 – jcaruso

+0

"SpectralGhost"& 'Barry Franklin'は動作しますが、アプリケーションが最小化されたときに利用可能ですか?私はそう信じていない。どちらの実装も、アプリケーションまたはクライアントが望むものによって異なります。 – jcaruso

1

はそのような何かを行うには非常に簡単な方法です:

Private Sub RichTextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles RichTextBox1.KeyPress 

    If Keys.T + Keys.ControlKey Then 
     TextBox1.Text = RichTextBox1.SelectedText  
    End If 

End Sub 

しかしこれは2010年からです。

0

私は同じ状況に遭遇しました。私はmenustripとasigned shortkeysを使用してperformclick関数を使用し、menustripのプロパティをfalseに設定して正常に動作しました。

関連する問題