2010-12-14 11 views
9

मैं अपने वीबीनेट अनुप्रयोग में दो प्रमुख प्रेस कैप्चर करने की कोशिश कर रहा हूं, इस उदाहरण के लिए CTRL + B, नीचे दिया गया कोड काम नहीं करता है लेकिन यह एकल कुंजी के लिए करता है। मैंने keypreview को सत्य के रूप में सेट करने का प्रयास किया है लेकिन इसका कोई प्रभाव नहीं है।vb.net कुंजी संयोजन

Private Sub main_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles mybase.KeyDown 
      If e.KeyCode = Keys.ControlKey And e.KeyCode = Keys.B Then 
       MsgBox("CTRL + B Pressed !") 
      End If 
     End Sub 
    End Class 

धन्यवाद

उत्तर

16

नियंत्रण कुंजी एक संशोधक कुंजी है। यह कोड Ctrl + B

e.KeyCode = Keys.B AndAlso e.Modifiers = Keys.Control 

कुंजी-कोड बी है, लेकिन संशोधक Ctrl है।

आपका कोड स्निपेट, अद्यतन:

Private Sub main_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles mybase.KeyDown 
    If (e.KeyCode = Keys.B AndAlso e.Modifiers = Keys.Control) Then 
     MsgBox("CTRL + B Pressed !") 
    End If 
End Sub 
+1

बिल्कुल सही, सोचा कि यह कुछ आसान होगा! धन्यवाद :) – Elliott

1

आप documentation for KeyEventArgs को देखें, तो आप ध्यान दें हूँ कि वर्ग एएलटी के लिए गुण को उजागर करता है, CTRL और संशोधक जो आप निर्धारित करने के लिए इन कुंजियों में दबाव डाला गया था की अनुमति देते हैं मुख्य प्रतीक कुंजी में आपकी रुचि है के अलावा।

Private Sub main_KeyDown(
     ByVal sender As Object, 
     ByVal e As System.Windows.Forms.KeyEventArgs) 
    Handles mybase.KeyDown 

    If e.Control And e.KeyCode = Keys.B Then 
     MsgBox("CTRL + B Pressed !") 
    End If 
End Sub 
2

आप संशोधक के बाद भी CONTROLKEY जोड़ने के लिए यह ठीक से काम करने की जरूरत है।

Private Sub main_KeyDown(ByVal sender As Object, ByVal e As 
    System.Windows.Forms.KeyEventArgs) Handles mybase.KeyDown 
    If (e.KeyCode = Keys.B AndAlso e.Modifiers.ControlKey = Keys.Control) Then 
     MsgBox("CTRL + B Pressed !") 
    End If 
End Sub