【发布时间】:2025-12-26 02:45:11
【问题描述】:
我想在用户控件中捕捉父窗体的 keyup 事件。我使用 ProcessCmdKey 但它只是给了我 keydown 事件并且它不会在 keyup 事件中引发。我该怎么做?
更新:我想捕捉表单的 keyup 事件。因为 Control.KeyUp 在控制集中时引发。
public partial class ExtendedButton : Button
{
const int WM_KEYDOWN = 0x100;
public ExtendedButton()
{
InitializeComponent();
}
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (msg.Msg == WM_KEYUP && keyData == (Keys.NumPad0))
{
MessageBox.Show("hi");
}
return base.ProcessCmdKey(ref msg, keyData);
}
}
【问题讨论】:
-
为什么这么复杂?见*.com/questions/18604633/…
-
@user2864740 我想在 usercontrol 中使用 keyup 事件,而不是在表单中
-
有Control.KeyUp .. 仍然不确定并发症是什么。
-
@user2864740 我想捕捉表单的 keyup 事件。因为 Control.KeyUp 在控制集中时引发。
-
你可能已经保留了一个你想要冒泡到的控件列表。有点像程序如何保持所有 Windows 的标题栏处于活动状态,无论哪个有焦点。