2017-06-06 52 views
0

我有一个WinForm项目,它利用WPF中的SpellBoxes。我现在正在创建一个函数来清除我的所有字段以及类中的TextBoxes。 textBoxes实际上是SpellBoxes整合到项目中,这就是为什么我认为我得到这个问题。如何清除WinForm中的所有SpellBox控件

public void ClearControls() 
     { 
      foreach (Control control in panel1.Controls) 
      { 
       if (control is SpellBox) 
       { 
        SpellBox txt = (SpellBox)control; 
        txt.Text = ""; 
       } 


      } 
     } 

然后叫上点击事件中使用SpellBoxes我似乎无法,ClearControls();

然而,由于对我说:从我的理解,这将是最好通过我所有的控件与一些类似的循环实现甚至可以迭代,就好像它们甚至不被识别。上述函数适用于TextBox,但不适用于spellBox’s。如果任何人都可以告诉我为什么会发生这种情况,我将不胜感激。在此先感谢递归搜索的

+0

此搜索深度仅为1级。你的SpellBox是否嵌套在其他控件中? – adv12

+0

是@ adv12它们嵌套在面板中,如果多数民众赞成你的意思 – whatdoyouNeedFromMe

+0

你的意思是,他们嵌套在面板本身嵌套在'panel1'内?因为如果是这样,那就是你的问题。如果他们是'panel1'的直接子女,那么我的预感是错误的,这不是你的问题。 – adv12

回答

0

简单的例子:

public void ClearControls(Control cntr) 
{ 
    foreach (Control control in cntr.Controls) 
    { 
     if (control is SpellBox) 
     { 
      control.Text = ""; 
     } 
     else if(control.HasChildren) 
     { 
      ClearControls(control); 
     } 
    } 
} 

您可以通过通过this本身传递开始它关闭:

ClearControls(this);