【问题标题】:What character value does Control + Enter/Return key send?Control + Enter/Return 键发送什么字符值?
【发布时间】:2010-02-11 18:10:03
【问题描述】:

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

奇怪的是,"AcceptsReturn" as 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 为 False 不能正常工作?它的预期目的是什么?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案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;
      }
      

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-08-13
          • 2011-08-18
          • 1970-01-01
          • 2010-12-10
          • 2015-09-19
          • 2023-03-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多