如何防止输入键在多行文本框中生成新行

本文关键字:新行 文本 输入 何防止 | 更新日期: 2023-09-27 18:04:02

我想使用KeyDown事件防止回车键在多行文本框内生成新行。尽管使用textBox清除文本框。Text = "或textBox.Clear(),它的行为如下:https://i.stack.imgur.com/vvdnp.png

private void textBox2_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
        {
            listBox1.Items.Add(textBox2.Text);
            textBox2.Text = "";
        }
}

如何防止输入键在多行文本框中生成新行

所以,基本上你想定义一个文本框为多行,只接受一个长行吗?

似乎你只想要一个单行文本框。将文本框定义为单行,并在设计时将其设置为看起来像多行文本框。

另一个选项是保持框的原样,并允许用户输入其中的换行字符。然后,当需要数据时,只需删除后面的所有换行字符

我做了一些实验,似乎在KeyUp事件中添加了来自Enter键的新行。所以这应该工作(请注意,我使用KeyUp而不是KeyDown):

private void textBox2_KeyUp(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        listBox1.Items.Add(textBox2.Text);
        textBox2.Text = "";
        e.Handled = true;
    }
}

或者你可以用

设置光标的位置
textBox2.Select(0, 0);

代替e.Handled = true;