当按下回车键时,TextBox是否应触发验证事件?

3

我有点困惑,据我记得,当用户输入所需的文本后按下 Enter 键时,文本框应该会触发 Validating 事件,但现在这种情况没有发生。

你知道这是否是预期行为吗?

谢谢。


如果你的表单有AcceptButton,那么在按下Enter键后,你可以触发文本框验证事件。 - undefined
4个回答

2

2

我使用了类似Javed Akram的答案的方法,但是不是调用验证函数,而是只在父元素上调用focus...

private void TextBox_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == (char)Keys.Enter)
    {
        (sender as TextBox).Parent.Focus();
    }
}

当文本框失去焦点时,它会调用自己的验证事件。

1

我记得好像没有。文本框通常只在获取/失去焦点时进行验证,除非手动触发了某些操作。

可以查看Bolu提供的链接,了解验证触发器列表。


是的,我看到了,但我以为在文本框中验证文本的第一种方法是按下回车键...也许只适用于DevExpress控件...嗯,无论如何还是谢谢。 - undefined
据我所知,当你离开文本框时,验证事件不会发生!它只会在你进入一个将CausesValidation设置为True的控件时发生。 - undefined

-1

当控件失去焦点时,将触发验证事件,因此您可以在按键事件中自行触发验证事件,在检查输入的键是否为Enter键后。

示例代码:

private void someTextBox_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == (char)Keys.Enter)
        {
            someTextBox_Validating(sender, new CancelEventArgs());
        }
    }

-1 你不应该这样做。这不会引发 TextBox 的 "Validating" 事件。它只调用了作为 "Validating" 事件处理程序命名的方法。任何在继承链中更上层的代码(即在 TextBox 类本身中)都不会以这种方式运行。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接