ج#:الحصول على المفاتيح الصحيحة للضغط من KeyData في KeyEventArgs

StackOverflow https://stackoverflow.com/questions/865774

سؤال

أنا أحاصر أ 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)

وهذا في تركيبة مع الشيكات الرئيسية العادية سوف أعطيك الجواب الذي نسعى إليه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top