如何从多行文本框移动到下一个文本框

时间:2014-01-26 03:13:57

标签: c#

我有这个程序,它将光标移动到非多行文本框中的上/下文本框。

在多行文本框中使用按键时,光标移动到下一个文本框,但按下按键向上时不会聚焦在下一个文本框中。使用键输入,它将从多行移动到下一个文本框并对其进行聚焦。

可能是什么原因?

我有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(); 
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

尝试将您的逻辑移动到按键事件而不是按键。这样可以正常工作, TESTED

也许多行TextBox内部有某种事件处理程序来处理键盘按键事件的上/下,在文本行之间移动光标。因此,您的代码工作将被内部行为所覆盖。

如果你把它放在关键事件中,反之亦然。您的代码逻辑将覆盖TextBox内部行为的效果。因此,如果TextBox包含多行文本,则光标将移动到下一个/上一个TextBox,而不是在多行TextBox内的文本行之间移动。