我们有一个多行控件,我们试图阻止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为假不能正常工作?它的目的是什么?
答案 0 :(得分:4)
答案 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事件。