我有一个如下代码
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == 13)
{
if (!textBox1.AcceptsReturn)
{
button1.PerformClick();
}
}
}
点击Enter后,它会向另一个文本框发送消息并开始换行。任何人都可以帮我把光标移回第一行吗? 我尝试过textBox1.SelectionStart,SelectionLength和Focus,但它不起作用,还有其他方法吗?
答案 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;