मैं पहले से ही प्रपत्र गुण में सच करने के लिएKeyPreview
सेट हैकीडाउन घटना .NET WinForms के साथ फायरिंग नहीं है?
मैं एक छोटे से कार्यक्रम पर काम कर रहा हूँ, और मैं एक समस्या यह लगता है जहां कि उस पर नियंत्रण के कुछ अंदर groupboxes हैं हो रही है जब मैं किसी भी तीर कुंजी को दबाता हूं और रिलीज़ करता हूं, तो केवल कुंजीपॉल ईवेंट को दबाकर कुंजीडाउन ईवेंट को मेरे फॉर्म पर ट्रिगर नहीं करता है। क्या मेरे कोड में कुछ गड़बड़ है जो इसका कारण बन सकती है?
विशेष रूप से, मैंने फॉर्म पर कीप्रेव्यू को सक्षम किया है, और दोनों subroutines में e.SuppressKeyPress = True
पर ब्रेकपॉइंट्स सेट किया है, और केवल frmMain_KeyUp के लिए ब्रेकपॉइंट हिट करता है।
मैंने दो ग्रुपबॉक्स कार्यक्रमों में जोड़ा जो उम्मीद करते हैं कि इस मुद्दे को कम कर सकते हैं, लेकिन ऐसी कोई किस्मत नहीं है। हालांकि, मेरे पास उस प्रपत्र पर एक कस्टम नियंत्रण है जिसे विशेष रूप से इन कीप्रेसों को अनदेखा करने के लिए कोड किया गया है, और कोड उस पर अपेक्षित काम करता है।
Private Sub frmMain_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown, GroupBox1.KeyDown, GroupBox2.KeyDown
e.SuppressKeyPress = True
Select Case e.KeyCode
Case Keys.Left
ScrollDir = ScrollDir Or 1
Case Keys.Right
ScrollDir = ScrollDir Or 2
Case Keys.Down
ScrollDir = ScrollDir Or 4
Case Keys.Up
ScrollDir = ScrollDir Or 8
Case Else
e.SuppressKeyPress = False
End Select
tScroll.Enabled = True
tScroll_Tick(Nothing, Nothing)
End Sub
Private Sub frmMain_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp, GroupBox1.KeyUp, GroupBox2.KeyUp
e.SuppressKeyPress = True
Select Case e.KeyCode
Case Keys.Left
ScrollDir = ScrollDir And (Not 1)
Case Keys.Right
ScrollDir = ScrollDir And (Not 2)
Case Keys.Down
ScrollDir = ScrollDir And (Not 4)
Case Keys.Up
ScrollDir = ScrollDir And (Not 8)
Case Else
e.SuppressKeyPress = False
End Select
If ScrollDir = 0 Then tScroll.Enabled = False
End Sub
उपयोगकर्ता नियंत्रण कि keypresses "पर ध्यान नहीं देता" में कोड इस तरह है:
Private Sub TileDropDown_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.KeyValue = 40 OrElse e.KeyValue = 38 OrElse e.KeyValue = 39 OrElse e.KeyValue = 37 Then
e.SuppressKeyPress = True
End If
End Sub
नियंत्रण से कोड है कि यह ध्यान नहीं देता और देखें कि क्या वह 'में e.SuppressKeyPress = TRUE' uncommented के साथ कम से कम एक बार – curtisk
आग में एक ब्रेकपाइंट सेट frmMain KeyDown हैंडलर, TileDropDown_KeyDown subroutine कभी नहीं कहा जाता है। इसके साथ टिप्पणी की, हैंडलर * * कहा जाता है। – Sukasa