Brett Allen
Brett Allen

Reputation: 5507

What character value does Control + Enter/Return key send?

We have a multi-line control that we are attempting to prevent the Enter/Return key from being used to create a new line.

Strangely enough, "AcceptsReturn" as False does not prevent this.

So we added the following:

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

This works fine, however one of the QA people discovered hitting Control + Enter still puts in a newline.

How would we prevent this?

And why does AcceptsReturn being False not work as it appears it should? What is the intended purpose of it?

Upvotes: 2

Views: 9313

Answers (3)

Hans Passant
Hans Passant

Reputation: 942178

The AcceptsReturn property does something else. The Enter key normally operates the OK button on a dialog. With AcceptsReturn = true, the Enter key will enter a new line in the text box instead of activating the OK button Click event.

Pressing Ctrl+Enter will generate a line feed, TextBox treats this as a new line as well. Use this KeyDown event to filter all combinations:

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

Upvotes: 2

overslacked
overslacked

Reputation: 4137

I'm guessing you'd have to trap this in the KeyDown, rather than the KeyPress event.

Upvotes: 0

Simon P Stevens
Simon P Stevens

Reputation: 27509

Ctrl + enter is most likely to produce a line feed (ASCII 10).

It may depend on the specific system though.

If you are checking for carriage return (ASCII 13) and line feed though you probably have most bases covered.

Upvotes: 4

Related Questions