можно установить фокус для TextBox в его TextChangeEvent - PullRequest
0 голосов
/ 11 июня 2019

(Visual Studio 2019 winform) Я хочу, чтобы мое текстовое поле было в фокусе, когда метка, связанная с текстовым полем, видна, вот мой код:

private void jTextBox9_TextChangeEvent(object sender, EventArgs e)
    {
        foreach (char c in jTextBox9.TextValue.ToLower())
            if (!eng.Contains(c))
            {
                label23.Text = "This Field has to be in English";
                label23.Visible = true;
                jTextBox9.Focus();

            }

            else
            {

                label23.Visible = false;

            }

    }

единственная проблема в этом коде состоит в том, что.Focus() и .Select() метод не работает в TextChangeEvent, есть ли какое-то решение для этого?Спасибо за помощь

1 Ответ

0 голосов
/ 11 июня 2019

Если текст меняется, то текстовое поле имеет фокус, потому что кто-то вводит текст.

Кроме того, ваша логика неверна, поскольку она делает метку видимой или невидимой для каждого символа.Вместо этого вы должны проверить, есть ли хотя бы один запрещенный символ, и после цикла установить видимость метки.

private void jTextBox9_TextChangeEvent(object sender, EventArgs e)
{
    bool containsDisallowedChar = false;
    foreach (char c in jTextBox9.TextValue.ToLower()) {
        if (!eng.Contains(c)) {
            containsDisallowedChar = true;
            break; // Exit the loop.
        }
    }
    if (containsDisallowedChar) {
        label23.Text = "This Field has to be in English";
        label23.Visible = true;
        if (!jTextBox9.Focused) { // In case text is changed in code.
            jTextBox9.Focus();
        }
    } else {
        label23.Visible = false;
    }
}
...