Control + Enter / Return键发送什么字符值?

时间:2010-02-11 18:10:03

标签: .net vb.net special-characters keypress

我们有一个多行控件,我们试图阻止Enter / Return键用于创建新行。

奇怪的是,“AcceptsReturn”为False并不能阻止这种情况。

所以我们添加了以下内容:

Private Sub txtAddr_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtAddr.KeyPress
    If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then
        e.Handled = True
    End If
End Sub

这样可以正常运行,但其中一位QA人员发现按下Control + Enter仍然会换行。

我们如何阻止这种情况?

为什么AcceptsReturn为假不能正常工作?它的目的是什么?

3 个答案:

答案 0 :(得分:4)

Ctrl + Enter最有可能产生换行符(ASCII 10)。

但可能取决于具体的系统。

如果您正在检查回车(ASCII 13)和换行,但您可能已经覆盖了大部分基地。

答案 1 :(得分:2)

AcceptsReturn属性可以执行其他操作。 Enter键通常在对话框中操作OK按钮。使用AcceptsReturn = true时,Enter键将在文本框中输入一个新行,而不是激活OK按钮Click事件。

按Ctrl + Enter将生成换行符,TextBox也将此视为新行。使用此KeyDown事件过滤所有组合:

private void textBox1_KeyDown(object sender, KeyEventArgs e) {
  if ((e.KeyData & Keys.KeyCode) == Keys.Enter) e.SuppressKeyPress = true;
}

答案 2 :(得分:0)

我猜你必须在KeyDown中捕获它,而不是KeyPress事件。