【发布时间】:2015-02-19 12:22:26
【问题描述】:
我有一个列表,其中包含我的 TextBox 以前的条目。通过使用 KeyUp / KeyDown,我可以滚动显示 TextBox 中的文本的列表。
在 TextBox 中设置另一个字符串,编辑光标应位于 Te强调文本xtBox 中字符串的末尾。 myTextBox.Select(RTextBox.Text.Length, 0); 在这里非常有用,但是在 KeyUp 之后这是将光标设置在文本的末尾,它是一个字符前。 KeyDown 结束后,正确。我猜根据命名 preview 尚未计算当前字符,但即使在长度上加上 +1 也不起作用。
private void MyTextBox_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
switch (e.KeyValue)
{
case (char)Keys.Up:
myTextBox.Text = GetNewText();
myTextBox.Select(myTextBox.Text.Length, 0);
break;
case (char)Keys.Down:
myTextBox.Text = GetNewText();
myTextBox.Select(myTextBox.Text.Length, 0);
break;
}
}
private void MyTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
switch (e.KeyChar)
{
case (char)Keys.Up:
// I'd guess setting the cursor here would be perfect
// but KeyUp/KeyDown can't be caught here, unfortunately
myTextBox.Select(RTextBox.Text.Length, 0);
break;
}
}
所以我认为我必须在 PreviewKeyDown-Event 之后设置光标,但在 KeyUp / KeyDown 的情况下我不知道这是否可能。
我应该设置光标的任何其他事件?
编辑:我正在使用 WinForms。
【问题讨论】:
标签: c# winforms textbox cursor keydown