ج#:الحصول على المفاتيح الصحيحة للضغط من KeyData في KeyEventArgs
-
21-08-2019 - |
سؤال
أنا أحاصر أ KeyDown
الحدث وأحتاج إلى أن أكون قادرًا على التحقق مما إذا كانت المفاتيح الحالية المضغوطة لأسفل هي: كنترول + يحول + م ?
أعلم أنني بحاجة إلى استخدام e.KeyData
من KeyEventArgs
, ، ال Keys
التعداد وشيء به أعلام التعداد والبتات ولكني لست متأكدًا من كيفية التحقق من المجموعة.
المحلول
تحتاج إلى استخدام الصفات التعريفية خاصية فئة KeyEventArgs.
شيء مثل:
//asumming e is of type KeyEventArgs (such as it is
// on a KeyDown event handler
// ..
bool ctrlShiftM; //will be true if the combination Ctrl + Shift + M is pressed, false otherwise
ctrlShiftM = ((e.KeyCode == Keys.M) && // test for M pressed
((e.Modifiers & Keys.Shift) != 0) && // test for Shift modifier
((e.Modifiers & Keys.Control) != 0)); // test for Ctrl modifier
if (ctrlShiftM == true)
{
Console.WriteLine("[Ctrl] + [Shift] + M was pressed");
}
نصائح أخرى
وأعتقد أن أسهل لاستخدام هذا:
وif(e.KeyData == (Keys.Control | Keys.G))
ويمكنك التحقق باستخدام تقنية مشابهة لما يلي:
if(Control.ModifierKeys == Keys.Control && Control.ModifierKeys == Keys.Shift)
وهذا في تركيبة مع الشيكات الرئيسية العادية سوف أعطيك الجواب الذي نسعى إليه.
لا تنتمي إلى StackOverflow