按Enter键后,C#文本框在第二行开始

时间:2011-03-14 03:07:19

标签: c# textbox

我的文本框清除后。起始位置从第二行而不是第一行开始。 (我不确定闪烁的是什么)

我正在制作聊天服务器,因此有一个按钮可以发送当前文本。在按键输入时,它将激活button1以发送当前文本。

TextChanged事件纯粹是出于调试目的。

textChanged被调用两次。一旦打开inBox.Text = string.Empty;这部分还可以。 inBox.Text为null。

退出button1_Click后,第二次调用TextChanged。但这一次。起始位置在第二行而不是第一行。 inBox.Text的长度现在为2。

知道问题是什么?感谢。

private void button1_Click(object sender, EventArgs e)
        {
            Global.Send("{Chat}{" + Global.userName + "}" + inBox.Text);
            inBox.Text = string.Empty;
        }

        private void inBox_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
                button1.PerformClick();
        }

        void InBoxTextChanged(object sender, EventArgs e)
        {
            TextBox tb = (TextBox)sender;
            char[] c = tb.Text.ToCharArray();
            int len = c.Length;
        }

3 个答案:

答案 0 :(得分:1)

将multiline属性设置为false?

答案 1 :(得分:1)

发生这种情况是因为在将密钥发送到文本框之前会触发按键事件。也就是说,您的代码会执行,然后KeyChar 13将被发送到文本框。

请尝试使用KeyUp。

答案 2 :(得分:1)

在Inbox_Keypressed()方法中,将KeyPressEventArgs.Handled属性设置为true (另外,您不应该使用13 - Keys.Return更具可读性):< / p>

private void inBox_KeyPress(object sender, KeyPressEventArgs e)
{
  if (e.KeyChar == 13)
  {
    button1.PerformClick();
    e.Handled = true;
  }
}