[英]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.