我有这个程序,它将光标移动到非多行文本框中的上/下文本框。
在多行文本框中使用按键时,光标移动到下一个文本框,但按下按键向上时不会聚焦在下一个文本框中。使用键输入,它将从多行移动到下一个文本框并对其进行聚焦。
可能是什么原因?
我有8个文本框,这些文本框的标记属性从0到7分组.TxtboxNbrLimit设置为8
private void textBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Down)
{
if (KeyIndex < TxtboxNbrLimit)
++KeyIndex;
if (KeyIndex == TxtboxNbrLimit)
{
SaveBtn.Select();
return;
}
if (_textBox[KeyIndex].Text != "")
ChangeDone = true;
_textBox[KeyIndex].SelectionStart = 0;
_textBox[KeyIndex].SelectionLength = _textBox[KeyIndex].Text.Length;
_textBox[KeyIndex].Select();
_textBox[KeyIndex].Focus();
}
else
{
if (e.KeyCode == Keys.Up)
{
if (KeyIndex > 0)
--KeyIndex;
_textBox[KeyIndex].SelectionStart = 0;
_textBox[KeyIndex].SelectionLength = _textBox[KeyIndex].Text.Length;
_textBox[KeyIndex].Select();
_textBox[KeyIndex].Focus();
}
}
}
答案 0 :(得分:1)
尝试将您的逻辑移动到按键事件而不是按键。这样可以正常工作, TESTED 。
也许多行TextBox内部有某种事件处理程序来处理键盘按键事件的上/下,在文本行之间移动光标。因此,您的代码工作将被内部行为所覆盖。
如果你把它放在关键事件中,反之亦然。您的代码逻辑将覆盖TextBox内部行为的效果。因此,如果TextBox包含多行文本,则光标将移动到下一个/上一个TextBox,而不是在多行TextBox内的文本行之间移动。