.Focus()在TextChangedEvent中不起作用

时间:2019-06-17 18:27:48

标签: c# winforms focus textchanged

我已经在Windows Form C#程序中实现了一些代码,问题是我想在TextChangeEvent中使用以下代码,而不是Validating事件,但需要使用.Focus().Select()方法不起作用。

对此有什么解决方案?

private void jTextBox5_TextChangeEvent(object sender, EventArgs e)
{
    if (jTextBox5.TextValue != "John")
    {
        jTextBox5.Focus();
    }
}

2 个答案:

答案 0 :(得分:0)

您可以尝试:

private void jTextBox5_TextChangeEvent(object sender, EventArgs e)
{
    if (jTextBox5.Text.ToUpper().Trim() != "JOHN")
    {
        ((Textbox)sender).Focus();
}

答案 1 :(得分:0)

如果您试图强制用户只能在文本框中键入单词“ John”,并且希望在每次按键时都对此进行验证,则可以执行类似以下代码的操作,该代码检查当前文本,一次一个字符,然后将每个字符与其对应的单词“ John”进行比较。

如果一个字符不匹配,那么我们将文本设置为匹配匹配的字符的子字符串,以便他们可以继续输入:

private void jTextBox5_TextChanged(object sender, EventArgs e)
{
    var requiredText = "John";

    // Don't allow user to type (or paste) extra characters after correct word
    if (jTextBox5.Text.StartsWith(requiredText))
    {
        jTextBox5.Text = requiredText;
    }
    else
    {
        // Compare each character to our text, and trim the text to only the correct entries
        for (var i = 0; i < jTextBox5.TextLength; i++)
        {
            if (jTextBox5.Text[i] != requiredText[i])
            {
                jTextBox5.Text = jTextBox5.Text.Substring(0, i);
                break;
            }
        }
    }

    // Set the selection to the end of the text so they can keep typing
    jTextBox5.SelectionStart = jTextBox5.TextLength;
}