在TextBox中覆盖Ctrl键?

时间:2015-03-11 15:25:24

标签: c# winforms

是否可以让文本框忽略 Ctrl + character 函数并为ctrl键重新分配不同的用途?

情况:我在表单上有多个文本框。理想情况下,我希望文本框在输入单个字符后从一个文本框跳转到另一个文本框。但是,文本框可以有多个输入,在这种情况下,我希望用户在输入多个字符时保持 ctrl 保留在文本框中。

基本上,我想要我的 ctrl (如果按住)来阻止文本框跳跃。

我尝试使用OnKeyDownOnKeyUpTextChanged事件的组合来处理何时按下 Ctrl 键,但最后,按住 Ctrl 键后,我无法输入任何数据。有办法解决这个问题吗?

原因是因为95%的时间总是1个字符。因此,为了快速遍历文本框,用户将击中单个字符。然而,在用户不想输入2位数的情况下,他们可以按住 Ctrl (因此它不会跳转到下一个文本框)并根据需要输入2位数。

1 个答案:

答案 0 :(得分:1)

就像评论者所说的那样,在UI意义上,这可能是一种更好的方法。你会按CTRL来防止切换文本框是一种奇怪的行为。话虽如此,在KeyDown中使用以下内容可以获得您想要做的事情。

if (!(e.Control && char.IsLetterOrDigit((char) e.KeyCode)))
{
    return;
}

txtBox.Text += (new KeysConverter()).ConvertToString(e.KeyCode);
e.Handled = true;