我正在使用winForms创建一个messenger应用程序。因此,当我在发件人的文本框中键入邮件并按回车键时,邮件会被传递,但我文本框上的光标会自动第一次进入下一行。然后它会保留在我输入和发送的所有消息中。我正在使用一个简单的按键事件来输入按钮,它使用return。问题是什么?代码如下:
private void txtChatOperatorMsg_KeyPress (object sender, KeyPressEventArgs e) {
if (e.KeyChar == (char) Keys.Return) {
pushToClientAndEmpty (txtChatOperatorMsg.Text);
}
}
private void pushToClientAndEmpty (string message) {
operatorgetset = message;
Thread operatorChatThread = new Thread (new ThreadStart (newThreadOperatorChat));
operatorChatThread.Start ();
txtChatOperatorMsg.Clear();
}
string operatorgetset {get;set;}
private void newThreadOperatorChat () {
SetText (operatorgetset);
}
答案 0 :(得分:1)
您是否尝试将KeyPressEventArgs.Handled设为true
?这标记事件处理并跳过进一步处理。为了工作,您的EventHandler
需要先于内部版本。
答案 1 :(得分:0)
这对您有用:
private void textBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar != 13) return;
textBox.Clear();
e.Handled = true;
}
正如Binkam所说,关键是e.Handled
。