【发布时间】:2012-09-15 05:32:00
【问题描述】:
我有一个TextBox(多行),如果我按Ctrl+Enter,它只会换行。但我也想在Shift+Enter 上这样做。
我试过了:
messageTextBox_KeyDown(null, new KeyEventArgs(Keys.Control | Keys.Enter));
但这不起作用。
我认为我可以这样做:
int lastSelectionStart = messageTextBox.SelectionStart;
messageTextBox.Text = messageTextBox.Text.Insert(messageTextBox.SelectionStart, Environment.NewLine);
messageTextBox.SelectionStart = lastSelectionStart;
但我不喜欢这样。
我怎样才能使 Shift+Enter 与 Ctrl+Enter 相同?
我当前的代码:
KeyDown 事件
if (e.KeyCode == Keys.Enter)
{
e.Handled = true;
if (e.Shift)
{
}
else if (!e.Control)
{
sendButton_Click(null, null);
}
}
在 KeyPress 事件中:
if (e.KeyChar == (char)13)
{
e.Handled = true;
return;
}
这是因为我想单独使用 Enter 键作为发送按钮。
【问题讨论】:
-
更改默认行为可能不是一个好主意。我相信用户已经开始期望多行文本框允许他们在想要进入新行时只需按 Enter 键。
-
我不这么认为。看脸书聊天。新行是 Shift+Enter,单独的 Enter 用作发送键。我也想要。
-
是的,它在聊天应用程序中是有意义的,但在标准的网络表单中却不一定。
标签: c# winforms .net-3.5 textbox newline