-2

我制作了一个自定义文本编辑器控件,它处理箭头键。问题是当表单中有多个控件时,箭头键处理排队:第一次使用焦点控件处理事件,下一次使用另一个自定义控件,然后再次使用焦点控件等等。那么我应该怎么做才能只使用自定义文本编辑器控件而不是表单上的所有控件来处理箭头键呢?

4

2 回答 2

0

您应该使用 KeyEventArgs 对象进行处理。使用键事件的任何控件都应将 KeyEventArgs.Handled 属性设置为 true 以指示它们已这样做。

于 2012-12-14T10:05:06.590 回答
0

一个问题实际上是因为 WinForm 导航带有箭头键。所以我禁用了我的文本编辑器的导航。对于该 OnPreviewKeyDown 事件,如示例中所示:

    protected override void OnPreviewKeyDown(PreviewKeyDownEventArgs e)
    {
        base.OnPreviewKeyDown(e);

        switch (e.KeyCode)
        {
            case Keys.Up:
            case Keys.Down:
            case Keys.Left:
            case Keys.Right:
                e.IsInputKey = true;
                break;
            default:
                break;
        }
    }
于 2012-12-14T19:00:45.600 回答