เหตุการณ์คีย์ดาวน์ที่ได้รับผลกระทบจากปุ่ม

ฉันเพิ่งมาใหม่และฉันมีปัญหาเล็กน้อยกับแอปพลิเคชัน C# อยากจับภาพเหตุการณ์คีย์ดาวน์ นี่ไม่ใช่ปัญหาในตอนแรก แต่หลังจากที่ฉันเพิ่มปุ่มบางปุ่มลงในแบบฟอร์ม เหตุการณ์การกดปุ่มลงของแบบฟอร์มจะไม่สนใจปุ่มลูกศรและย้ายโฟกัสจากปุ่มหนึ่งไปยังปุ่มถัดไป (เหตุการณ์การกดปุ่มขึ้นทำงานได้) มี จะหยุดสิ่งนี้และทำให้พวกเขาทำอย่างอื่นเมื่อฉันกดปุ่มลูกศรค้างไว้ได้อย่างไร


person sheitan    schedule 03.05.2009    source แหล่งที่มา


คำตอบ (2)


ตั้งค่าคุณสมบัติ KeyPreview บนแบบฟอร์มให้เป็นจริง ซึ่งจะช่วยให้แบบฟอร์มสามารถดูเหตุการณ์การกดแป้นพิมพ์ได้นอกเหนือจากการควบคุมลูก

เพิ่มสิ่งนี้ลงในแบบฟอร์มของคุณ ...

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    if (keyData.Equals(Keys.Right))
    {
        MessageBox.Show("Right Key Pressed!");
    }

    return base.ProcessCmdKey(ref msg, keyData);
}
person JP Alioto    schedule 03.05.2009
comment
ฉันตั้งค่า KeyPreview เป็นจริง แต่ยังไม่ได้รับการตอบสนองใดๆ เมื่อกดปุ่มลูกศร ดูเหมือนว่าปุ่มอื่นๆ ทั้งหมดจะทำงานในเหตุการณ์ KeyDown ยกเว้นลูกศร - person sheitan; 04.05.2009
comment
เหตุการณ์ Form Key* ปกติไม่ยึดปุ่มควบคุม คุณต้องแทนที่ ProcessCmdKey แทน - person JP Alioto; 04.05.2009
comment
ขอบคุณมาก. สิ่งนี้ช่วยฉันได้มาก! :) - person sheitan; 04.05.2009

หากคุณไม่ต้องการให้ฟังก์ชันการลงคีย์ปกติสำหรับตัวควบคุม คุณจะต้องตั้งค่าเหตุการณ์การลงคีย์บนแต่ละตัวควบคุม และตั้งค่าแอตทริบิวต์ที่ได้รับการจัดการสำหรับอาร์กิวเมนต์เหตุการณ์ให้เป็นจริง ด้วยวิธีดังกล่าวจะไม่เกิดฟองขึ้น ฟังก์ชันการควบคุมในตัว

person Sebastian Bender    schedule 03.05.2009