簡體   English   中英

如何在C#.NET表單上捕獲按鍵

[英]How to catch a key press on a C# .NET form

我有一個包含很多控件的父表單。 我想要做的是過濾該表格的所有按鍵。 麻煩的是,如果焦點在表單上的一個控件上,那么父表單沒有獲得按鍵事件,那么如何捕獲按鍵事件?

在表單上將KeyPreview設置為true,您將捕獲它們: MSDN

這僅適用於表單,但如果任何其他組件處於焦點位置則不會

public partial class ChildForm : Form
{

    public ChildForm()
    {       
       KeyPress += KeyPressHandler;
    }

    public KeyPressHandler(object sender, KeyPressEventArgs e)
    {
       if (_parent != null)
       {
           _parent.NotifyKeyPress(e);
       } 
    }
}

即使其他組件處於焦點,這也會起作用

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    if (keyData == Keys.F1)
    {
        MessageBox.Show("You pressed the F1 key");
        return true;    // indicate that you handled this keystroke
    }

    // Call the base class
    return base.ProcessCmdKey(ref msg, keyData);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM