如何防止回车键在多行文本框中创建新行?

时间:2014-05-17 15:12:35

标签: c# textbox

我想阻止Enter键使用KeyDown事件在多行文本框中创建一个新行。尽管使用textBox.Text =“”或textBox.Clear()清除了textBox,但它的行为如下:http://i.imgur.com/3sknAbO.png

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

2 个答案:

答案 0 :(得分:0)

我正在尝试一下,似乎在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;

答案 1 :(得分:0)

那么,基本上你想将一个文本框定义为多行,只接受一行长行?

好像你只想要一行文本框。将文本框定义为单行,并在设计时将其设置为外观,就像多行文本框一样。

另一种选择是将框保持原样,并允许用户输入其中的换行符。然后,当您需要数据时,只需在事实之后删除所有换行符