首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LostFocus方法触发多次

LostFocus方法触发多次
EN

Stack Overflow用户
提问于 2016-11-14 14:45:32
回答 1查看 1.3K关注 0票数 0

我有一个MaskedTextBox,当程序失去对它的关注时,我想验证它。我的方法如何处理一个问题,事件会一次又一次地触发,而不仅仅是一次(当用户输入无效日期时)。

这就是我所用的方法;

代码语言:javascript
复制
private void onDateTextBox_LostFocus(object sender, RoutedEventArgs e)
{
    TextBox _dateTexBox = sender as TextBox;
    if (!_dateTexBox.IsKeyboardFocusWithin)
    {
        if (Convert.ToInt32(dateTextBox.Text.Substring(0, 2)) > 31)
        {
            MessageBox.Show("Invalid day.");
            dateTextBox.Focus();
        }

        if (Convert.ToInt32(dateTextBox.Text.Substring(3, 2)) > 12)
        {
            MessageBox.Show("Invalid month.");
            dateTextBox.Focus();
        }

        if (Convert.ToInt32(dateTextBox.Text.Substring(6, 4)) > 2100)
        {
            MessageBox.Show("Invalid year.");
            dateTextBox.Focus();
        }
    }
}

我输入了IsKeyboardFocusWithin检查,但是事件仍然多次触发。如何确保事件只触发一次?

EN

回答 1

Stack Overflow用户

发布于 2016-11-14 14:53:23

WPF DatePicker LostFocus fires seven times中所述

LostFocus是一个路由事件,路由策略设置为Bubble。它意味着它会一直泡到它的父窗口,直到根窗口,直到通过显式设置e.Handled =true来处理。 因此,这意味着,即使子控件失去了焦点,它也会冒泡到您的datePicker,这就是为什么您看到多个命中您的方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40591434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档