我在表单上有一个文本框,我试图检测用户输入的键。文本框是多行的,带有自动换行。我不希望用户按下回车键(因为我希望在一行上输入所有文本,包装)所以我使用了以下代码:
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 中的下一行。
感谢您对此的任何帮助。