WPF中等效的WinForms TextBox.Validating事件

时间:2009-09-11 14:39:57

标签: c# .net wpf vb.net winforms

在WinForms中,我可以处理Validated事件,以便在用户更改TextBox中的文本后执行某些操作。与TextChanged不同,Validated不会针对每个字符更改触发;它只在用户完成后才会被触发。

我可以使用WPF中的任何内容来获得相同的结果,只有在用户完成更改文本后才会引发事件?

4 个答案:

答案 0 :(得分:3)

当用户从您的文本框移动到任何其他控件时,

LostFocus将会触发。

答案 1 :(得分:2)

似乎没有本机解决方案。 LostFocus活动是个好主意。但是当用户单击Enter时,他希望TextBox验证更改。 所以这是我的建议:当键为Enter时使用LostFocus事件和KeyDown事件。

private void TextBox_LostFocus(object sender, RoutedEventArgs e)
{
    // code to lauch after validation
}

private void TextBox_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Enter)
    {
        // call the LostFocus event to validate the TextBox
        ((TextBox)sender).RaiseEvent(new RoutedEventArgs(TextBox.LostFocusEvent));
    }
}

答案 2 :(得分:2)

LostFocus不等同于Validate。当您在一个屏幕上有多个文本框并且每个文本框都有一些用Validate编写的逻辑时,它会产生很多问题。在验证事件中,您可以轻松控制焦点,但不能轻松控制LostFocus。

答案 3 :(得分:0)

您也可以尝试使用Binding.ValidationRules

记录于:http://msdn.microsoft.com/en-us/library/system.windows.data.binding.validationrules.aspx

以下是开始使用的文章:

如何实现绑定验证:

http://msdn.microsoft.com/en-us/library/ms753962.aspx

相关问题