我有一个表单上的文本框,我想检测用户键入的键。这个文本框是多行的,并启用了自动换行。我不希望用户按回车键(因为我想在一行上输入所有文本,然后自动换行),所以我使用了下面的代码:
private void txtPlain_KeyPress(object sender, KeyPressEventArgs e) {
if (e.KeyChar == (char)13) {
MessageBox.Show("Enter keys are not allowed");
e.KeyChar = (char)0;
}
}
这在我的测试中运行良好,但当我测试CTRL+ENTER时,它无法正常工作,因为我不知道如何检测控制键。通过我的谷歌搜索,我发现需要使用KeyUp/Down事件,所以现在我有了以下代码:
private void txtPlain_KeyUp(object sender, KeyEventArgs e) {
//if (e.KeyData == (Keys.Control | Keys.Enter)) {
if (e.KeyCode == Keys.Enter || (e.KeyCode == Keys.Enter && e.Control)) {
MessageBox.Show("Enter keys are not allowed:");
//e.KeyValue = Keys.None;
}
}
第一行被注释掉的代码由于某些原因无法工作,如果有人能解释一下为什么会有用,那就太好了。
KeyUp/Down事件的问题在于我不知道如何从文本中删除回车键,与KeyPress事件不同,后者可以将KeyChar设置为零。该事件捕获Enter和Ctrl+Enter键,但光标仍然会移到TextBox的下一行。
感谢任何对此的帮助。
Keys
枚举是在System.Windows.Forms
命名空间中定义的。这很不可能是一个 Web Forms 应用程序。 - Cody Gray