سؤال

أواجه مشكلة في التقاط كنترول+pageup ضغط المفاتيح في عنصر تحكم ListView في تطبيق WinForms.

أنا أستخدم هذا الرمز لالتقاط ضغطات المفاتيح -

private void ListViewEx_KeyDown(object sender, KeyEventArgs e)
{
...
if(e.Control){
if((e.KeyCode ^ Keys.Left) == 0)
    MessageBox.Show("Left"); //shows messagebox
else if((e.KeyCode ^ Keys.PageUp) == 0)
    MessageBox.Show("PageUp"); //does not
...
}

هل أحتاج إلى الغوص في wndproc لمعالجة هذا المفتاح؟ شكرًا.


تحرير: لقد اكتشفت أن هذا يعمل ، وكانت المشكلة في إرفاق TabControl التعامل مع هذه المفاتيح قبل أن يصل إليها ListControl.

هل كانت مفيدة؟

المحلول

لا حاجة إلى wndproc:

if ((e.Modifiers & ModifierKeys) == Keys.Control && e.KeyCode == Keys.PageUp)
{
    // ctrl + page up was pressed
}

نصائح أخرى

تتضمن وسيطة E.KeyData مفاتيح المعدل. اجعله يبدو هكذا:

  if (e.KeyData == (Keys.Control | Keys.PageDown)) {
    // Do your stuff
    Console.WriteLine("Ctrl+PgDn");
  }

تحقق من وجود

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