2017-06-06 53 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);