Как переключить фокус текстовых полей при достижении третьей цифры? - PullRequest
0 голосов
/ 14 декабря 2011

Я использую 2 текстовых поля, которые будут вводить целые цифры до максимальной длины 3. Как я могу передать указатель мыши из первого текстового поля во второе после ввода 3 цифр?

Я пытаюсь сделать это на событии TextChange, но я не уверен, как проверить, когда была проверена третья цифра ...

public partial class PingIPRange : Form
{
    public PingIPRange()
    {
        InitializeComponent();

        txtF1.TextChanged += new EventHandler(NextField);
        txtF2.TextChanged += new EventHandler(NextField);
    }

    private void NextField(object sender, EventArgs e)
    {
        // Well, I have no idea how to start with this...
    }
}

Ответы [ 3 ]

3 голосов
/ 14 декабря 2011

Вы уверены, что хотите, чтобы указатель мыши двигался, а не "carot" для набора текста, что является стандартной практикой.

Вы захотите проверять длину строки в текстовом поле для каждого символаи затем установите фокус на новое текстовое поле.

3 голосов
/ 14 декабря 2011

Однажды txtF1.Text.Length == 3, вы можете использовать txtF2.Focus(), чтобы «переместить курсор» во 2-е текстовое поле

РЕДАКТИРОВАТЬ:

private void NextField(object sender, EventArgs e)
{
    if (txtF1.Text.Length == 3) // Textbox contains 3 characters, you DO NEED to validate your input.
        txtF2.Focus();
}
0 голосов
/ 14 декабря 2011

Как и в предыдущих ответах, вы, вероятно, хотите TextBox.Focus(), но в случае, если вы действительно хотите переместить указатель:

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
        if (((TextBox)sender).Text.Length == 3) { Cursor.Position = textBox2.Location; }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...