2

我们有一个多行控件,我们试图阻止使用 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

这很好用,但是发现按 Control + Enter 的 QA 人员之一仍然会换行。

我们将如何防止这种情况发生?

为什么 AcceptsReturn 为 False 不能正常工作?它的预期目的是什么?

4

3 回答 3

4

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

不过,这可能取决于特定的系统。

如果您正在检查回车(ASCII 13)和换行,尽管您可能已经涵盖了大多数基础。

于 2010-02-11T18:23:42.943 回答
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;
}
于 2010-02-11T19:05:34.763 回答
0

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

于 2010-02-11T18:23:57.763 回答