本文轉自:http://www.cnblogs.com/kerrycode/archive/2010/02/05/1664267.html
在WinForm裡面有時候需要清空自己輸入內容或是選擇的選項,以便重新操作流程,那麼一般你是怎麼清空介面各個控制項值的呢?如果表單裡面控制項,尤其是TextBox控制項比較多的時候,代碼裡面是不是要設定每個控制項的Text屬性值為空白呢?下面我用這個例子,來探討下清空介面控制項值的小技巧。而且還能複用。不必每個表單都做這些枯燥、無聊的工作。
一般的做法是在清除控制項的事件裡面添加下面這樣的代碼:
代碼
private void btnClear_Click(object sender, EventArgs e)
{
this.txbAccount.Text = "";
this.txbAddress.Text = "";
this.txbCmp.Text = "";
this.chkCash.Checked = false;
this.cmbDepart.Text = "";
//.............表單裡面各類要清空控制項;
}
設想如果這樣做,一個表單我們清空介面需用10行代碼,50個表單那麼就是500行代碼,大量重複的勞動,如果我們用下面這種方法的話,那麼項目裡面代碼量將大大減少,而且封裝到類裡面,可以重用。(當然這個函數還可以重載、擴充,以便適應不同的需求)
private void btnClear_Click(object sender, EventArgs e)
{
ClearCntrValue(this.pnlContent);
}
代碼
/// <summary>
/// 清除容器裡面某些控制項的值
/// </summary>
/// <param name="parContainer">容器類控制項</param>
public void ClearCntrValue(Control parContainer)
{
for (int index = 0; index < parContainer.Controls.Count; index++)
{
// 如果是容器類控制項,遞迴調用自己
if (parContainer.Controls[index].HasChildren)
{
ClearCntrValue(parContainer.Controls[index]);
}
else
{
switch(parContainer.Controls[index].GetType().Name)
{
case "TextBox":
parContainer.Controls[index].Text = "";
break;
case "RadioButton":
((RadioButton)(parContainer.Controls[index])).Checked = false;
break;
case "CheckBox":
((CheckBox)(parContainer.Controls[index])).Checked = false;
break;
case "ComboBox":
((ComboBox)(parContainer.Controls[index])).Text = "";
break;
}
}
}
}