我正在 Windows 窗体中实现我自己的控件。这是一个树形视图,所以我必须实现导航键:箭头、向上/向下翻页以及它们与 shift 和 control 的组合来处理多选。
最近我发现,Ctrl + PageUp/PageDown 的组合做了一些奇怪的事情。首先,它不会触发 OnKeyDown(仅捕获 ControlKey)。此外,在我用鼠标单击控件之前不会捕获其他键(看起来它失去了焦点)我已经实现了 IsInputKey:
protected override bool IsInputKey(Keys keyData)
{
// Capture arrow keys
if ((keyData & (Keys.Up | Keys.Down | Keys.Left | Keys.Right |
Keys.PageDown | Keys.PageUp | Keys.ControlKey | Keys.Control)) != 0)
return true;
else
return base.IsInputKey(keyData);
}
OnKeyDown 处理程序没有什么特别之处。
到底是怎么回事?