C# 是否覆盖文本框中的Ctrl键?

C# 是否覆盖文本框中的Ctrl键?,c#,winforms,C#,Winforms,是否可以使用文本框忽略Ctrl+字符功能,并为Ctrl键重新指定其他用途 情境:我在一个表单上有多个文本框。理想情况下,我希望文本框在输入单个字符后从一个文本框跳转到另一个文本框。但是,文本框可以有多个输入,在这种情况下,我希望用户在输入多个字符时按住ctrl键保持在文本框上 基本上,我希望我的ctrl键(如果按住)可以阻止文本框跳转 我曾尝试使用OnKeyDown、onkeydup和TextChanged事件组合来处理按下Ctrl键的情况,但最后,按住Ctrl键后,我无法输入任何数据。有办法解

是否可以使用文本框忽略Ctrl+字符功能,并为Ctrl键重新指定其他用途

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

基本上,我希望我的ctrl键(如果按住)可以阻止文本框跳转

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


这是因为95%的时间它总是1个字符。因此,要快速遍历文本框,用户只需点击一个字符。然而,在用户不太可能希望输入两位数字的情况下,他们可以按住Ctrl键(这样它就不会跳转到下一个文本框)并根据需要输入两位数字。

正如评论员所说,从用户界面的角度来看,可能有更好的方法来实现这一点。按CTRL键以防止切换文本框是一种奇怪的行为。话虽如此,在KeyDown中使用以下命令应该可以让您了解您想要做的事情

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

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

您当然可以通过某种方式将
Ctrl
+
SomeKey
转换为char(请参阅,等等),但您确定自己在做什么吗?按下
Ctrl
键时打字(对我来说)听起来绝对不舒服。不清楚您试图实现什么场景,以及为什么
TextBox
在输入一个字符后更改其焦点。你能提供一些代码并更好地解释它吗?也许有更好的解决方案。你在UI上进行的第一次可用性研究应该是在你的团队成员身上进行的。希望他们能畅所欲言,告诉你他们的想法。在这种不太可能的情况下,至少选择一个不会改变字符代码的键。没有人能很好地使用ScrollLock键。@Sinartr-请查看编辑以了解这种奇怪情况背后的原因!:)你说的是数字
Shift
似乎是一个更容易使用的键。很容易将
#
转换为
3
。我知道你想做什么了。使用设置为150ms的定时器怎么样?因此,焦点只会在延迟结束后移动,并且在该时间段内没有输入其他字符。如果输入新字符,请重置计时器,使其再次从0计数到150毫秒。谢谢!这把我引向了正确的方向。很抱歉反应太晚,我被转移到其他项目。