虽然我使用bool禁用它,但TextChanged事件触发了

时间:2015-08-27 06:49:35

标签: c# wpf

我需要重置帧上的所有字段,但在这样做时我需要disable textchanged event

为此,我尝试使用bool变量。像这样:

第一种让我能够在帧上找到所有TextBox孩子的方法。

bool skipChange = false; 

public static IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj) where T : DependencyObject
{            
    if (depObj != null)
    {
        for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
        {
            DependencyObject child = VisualTreeHelper.GetChild(depObj, i);
            if (child != null && child is T)
            {
                 yield return (T)child;
            }

            foreach (T childOfChild in FindVisualChildren<T>(child))
            {
                yield return childOfChild;
            }
        }
    }
}

这使我能够找到某种类型的所有孩子并重置它。

我将其重置为:

public void resetForm() {
    foreach (TextBox tb in FindVisualChildren<TextBox>(sPanelMain))
    {
        tb.Text = "";                
    }
 }

最后我需要调用resetForm方法并禁用textchnged来激活。

private void btnAddForm_Click(object sender, RoutedEventArgs e)
{
    skipChange = true;
    resetForm();
    skipChange = false;
}


 private void PDText_TextChanged(object sender, TextChangedEventArgs e)
 {
     if (skipChange) { return; }
     ....
 }

通过这种方式,如果skipChange为真,我会尝试退出TextChanged方法。

但是在TextChanged方法中,skipChange始终为false,尽管我在调用之前将其设置为true。

感谢名单

0 个答案:

没有答案