Focus en un solo textbox de C#

Buenos dias, tengo un problema con mis textbox. Tengo el focus para uno en especifico pero cuando intento diguitar en los otros se me activa en el que tengo el focus. Como puedo hacer de que el textbox que tengo el focus solo se active cuando escaneo (por que solo para eso lo ocupo). Este es mi codigo.

 private void Form1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (!txtescaner.Focused)
        {
            txtescaner.Focus();
            txtescaner.Text += e.KeyChar;
            // Move el cursor al final
            txtescaner.SelectionStart = txtescaner.Text.Length;

            if (Char.IsNumber(e.KeyChar) || (char.IsSymbol(e.KeyChar)))
            {
                e.Handled = false;

            }
            else if (Char.IsLetter(e.KeyChar))
            {
                MessageBox.Show("Solo se permiten numeros", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
                e.Handled = true;
                txtescaner.Clear();
                return;
            }
        }
    }

Gracias.

0
задан 05.12.2016, 15:02
4 ответа

Оно могло бы функционировать, если ты помещаешь другие text box в if

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (txtbox.Focused || txtbox2.Focused || txtbox3.Focused)
        {
            txtescaner.Focus();
            txtescaner.Text += e.KeyChar;
            // Move el cursor al final
            txtescaner.SelectionStart = txtescaner.Text.Length;

            if (Char.IsNumber(e.KeyChar) || (char.IsSymbol(e.KeyChar)))
            {
                e.Handled = false;

            }
            else if (Char.IsLetter(e.KeyChar))
            {
                MessageBox.Show("Solo se permiten numeros", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
                e.Handled = true;
                txtescaner.Clear();
                return;
            }
        }
    }
1
ответ дан 24.11.2019, 12:16

Я думаю, что он из-за if ее первый lГ-nea кода (if (!txtescaner.Focused)), там ты спрашиваешь, если этот textbox не находится в focus. false ты вводишь существо и вторая lГ-nea помещает себе в focus txtescaner.Focus(); Ты был бы должен снимать первый if

1
ответ дан 24.11.2019, 12:16
  • 1
    Эти в правильном. Однако, если OP это делает, будешь терять функциональность, которую уже он попросил раньше. Твой ответ однако эта хорошо. – gbianchi♦ 05.12.2016, 15:44
  • 2
    Мне равный просвет плохо, что этот KeyPress на уровне form. – Luciano 05.12.2016, 15:49

Событие, которое манипулирует состоянием focus, называется Form1_KeyPress, а следовательно возможно, что ошибка состоит в том, что бросается событие каждый раз, когда ты нажимаешь на клавишу внутри формуляра. (Бросается событие на уровне формуляра).

AsegГєrate, которого событие это бросило TextBox, который должен.

0
ответ дан 24.11.2019, 12:16

Событие - на уровне формуляра, пробует менять это на специфическое событие texbox, в которое ты хочешь санкционировать так, ты избежишь бросать событие в любом контроле

Другая opciГіn состояла бы в том, чтобы использовать маски для утверждения

0
ответ дан 24.11.2019, 12:16