2013-02-14 185 views
1

我想要清除所有的文本框,組合框和重置numericupdown回到零按下按鈕。清除文本框和組合框c#

最新最好的辦法做到這一點。對不起,如果有人發現這個愚蠢的。

+2

這是對的WinForms或WPF? – eandersson 2013-02-14 17:13:12

+0

它是Windows窗體應用程序 – user1903439 2013-02-14 17:15:35

回答

2

如果您正在使用的WinForms,你可以使用以下方法來清除所有想要的控制。

public void ClearTextBoxes(Control control) 
{ 
    foreach (Control c in control.Controls) 
    { 
     if (c is TextBox) 
     { 
      if (!(c.Parent is NumericUpDown)) 
      { 
       ((TextBox)c).Clear(); 
      } 
     } 
     else if (c is NumericUpDown) 
     { 
      ((NumericUpDown)c).Value = 0; 
     } 
     else if (c is ComboBox) 
     { 
      ((ComboBox)c).SelectedIndex = 0; 
     } 

     if (c.HasChildren) 
     { 
      ClearTextBoxes(c); 
     } 
    } 
} 

然後激活它只需在表單中添加一個按鈕,在後臺代碼如下。

private void button1_Click(object sender, EventArgs e) 
{ 
    ClearTextBoxes(this); 
} 
+0

我可能是錯的,但我不認爲'HasChildren'的條件是必要的。 – AbZy 2013-02-14 17:20:29

+0

它仍然沒有工作,但與'if'聲明只會經歷的孩子,如果需要控制。 – eandersson 2013-02-14 17:31:06

+0

感謝您的回答。它除了一件事情以外。 – user1903439 2013-02-14 17:35:29

-1

如果是這樣的WinForms通過所有的控制循環,然後重新設置

foreach (Control c in this.Controls) 
{ 
    if (c is TextBox) 
    { 
     ((TextBox)c).Text = ""; 
    } 
    else if (c is ComboBox) 
    { 
     ((ComboBox)c).SelectedIndex = 0; 
    } 
    else if (c is NumericUpDown) 
    { 
     ((NumericUpDown)c).Value= 0; 
    } 
} 
+0

這隻會清晰頂層控制。 – Servy 2013-02-14 17:17:36

+0

你應該想要檢查控制是否是'ComboBox'類型而不是鑄造... – MethodMan 2013-02-14 17:27:02

+0

我正在檢查它... – gzaxx 2013-02-14 17:32:50

1
public void ClearTextBoxes(Control parent) 
{ 
    foreach(Control c in parent.Controls) 
    { 
     ClearTextBoxes(c); 
     if(c is TextBox) c.Text = string.Empty; 
     if(c is ComboBox) c.SelectedIndex = 0; 
    } 
} 

public void ClearTextBoxes(Control ctrl) 
{ 
    if (ctrl != null) 
    { 
     foreach (Control c in ctrl.Controls) 
     { 
      if (c is TextBox) 
      { 
       ((TextBox)c).Text = string.empty; 
      } 

      if(c is ComboBox) 
      { 
       ((ComboBox)c).SelectedIndex = 0; 
      } 
      ClearTextBoxes(c); 
     } 
    } 
} 
+1

1)這隻會清除頂級文本框2)它只會清除文本框 – Servy 2013-02-14 17:18:23

+0

我將編輯此文件併發布遞歸代碼Servy – MethodMan 2013-02-14 17:19:55

+0

1)此*仍*僅清除文本框2)您現在不清除頂層控制。 – Servy 2013-02-14 17:21:56