在多行文本框中,我的光标自动转到下一行

In multiline textbox, my cursor automatically goes to next line

我正在使用 winForms 制作一个信使应用程序。因此,当我在发件人的文本框中键入一条消息并按回车键时,消息已送达,但我的文本框上的光标第一次自动转到下一行。然后它会保留我输入和发送的所有消息。我正在为使用 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);
     }

您尝试过将 KeyPressEventArgs.Handled 设置为 true 吗?这会将事件标记为已处理,并跳过进一步处理。为了工作,你的 EventHandler 需要先于内部的。

这对你有用:

    private void textBox_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar != 13) return;
        textBox.Clear();
        e.Handled = true;
    }

正如 Binkam 所建议的,关键是 e.Handled