在C#中输入密钥

时间:2016-12-12 08:51:33

标签: c#

我有一个如下代码

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)   
{
   if (e.KeyChar == 13)
   {
       if (!textBox1.AcceptsReturn)
       {
           button1.PerformClick();
       }           
    }
}

点击Enter后,它会向另一个文本框发送消息并开始换行。任何人都可以帮我把光标移回第一行吗? 我尝试过textBox1.SelectionStart,SelectionLength和Focus,但它不起作用,还有其他方法吗?

2 个答案:

答案 0 :(得分:1)

您可以通过将KeyPressEventArgs.Handled属性设置为true来阻止将按键传递给控件:

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

正如您在评论中提到的那样,您正在实施聊天应用,您也可能希望实现Shift + Return的典型行为,插入新行:

private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyValue == 13 && !e.Shift)
    {
        if (!textBox1.AcceptsReturn && !string.IsNullOrEmpty(textBox1.Text))
        {
            button1.PerformClick();
            textBox1.Text = "";
            e.Handled = true;
        }
    }
}

答案 1 :(得分:0)

要将光标位置设置为文本框的开头,请使用以下... 我猜测你并没有将它们相互结合使用......

textBox1.SelectionStart = 0;
textBox1.SelectionLength = 0;