控件内容清除

首先,感谢作者提供的此方法,不过本人只是对于大体思路能够理解,而具体方法不太理解,如:ClearCntrValue()方法中的for (int index = 0; index < parContainer.Controls.Count; index++)

判 断(本人使用时没能成功,因为如果传过来的是控件的话如果所传来的都不含有子控件——本身不是容器控件,那下面的方法是不是就永远不执行了, 那当前控件如何处理?),以及调用时ClearCntrValue(this.pnlContent);中的this.pnlContent所指为何,是 否是相应的控件,还是控件的集合,若是集合则在parContainer.Controls.Count时似乎说不通?
其次,在看了作者的思路后,本人根据自己的理解做了一下处理(当然这样处理是由于自己使用方便的考虑),希望作者不要介意,呵呵。我的使用方法及处理如下:
1、调用:
private void btnClear_Click(object sender, EventArgs e)
{
//strList为要清空内容的控件的名称的数组
List<string> strList = new List<string>();
strList.Add("txtBox");
strList.Add("chcBox");
strList.Add("listBox1");
foreach (Control c in this.Controls)
ClearCntrValue(c, strList);
}
2、清除容器里面某些控件的值的方法
/// <summary>
/// 清除容器里面某些控件的值
/// </summary>
/// <param name="parContainer">容器类控件</param>
/// <param name="strList">需要清空的控件的名称</param>
public void ClearCntrValue(Control parContainer,List<string> strList)
{
cntr = parContainer;
// 如果是容器类控件,递归调用自己
if (parContainer.HasChildren)
{
foreach (Control c in parContainer.Controls)
ClearCntrValue(c, strList);
}
else if (strList.Exists(ExistString))
{
//根据不同类型控件做相应处理
switch (parContainer.GetType().Name)
{
case "TextBox":
parContainer.Text = string.Empty;
break;
case "RadioButton":
((RadioButton)(parContainer)).Checked = false;
break;
case "CheckBox":
((CheckBox)(parContainer)).Checked = false;
break;
case "ComboBox":
((ComboBox)(parContainer)).Text = string.Empty;
break;
case "ListBox":
((ListBox)(parContainer)).Items.Clear();
break;
}
}
}//end ClearCntrValue()
3、委托方法块定义
 
bool ExistString(string str)
{
//cntr.Name控件名称,此判断是为了清空想要
//清空的控件信息——根据控件名称清空
//cntr为全局的私有变量,类型为:Control
if (str == cntr.Name) return true;
else return false;
}
 
 
转自:http://www.csharpwin.com/questiondetail.aspx?ChID=4&AID=10712
posted @ 2013-06-04 11:24  Jimmy_5  阅读(648)  评论(0编辑  收藏  举报