如下代码可以提供遍历Controls的功能,这几句代码的意义我都注释好了。string mytext;
foreach(Control co in this.Controls) //1。遍历控件
{
mytext=co.GetType().ToString(); //2。得到当前控件的类型
if(mytext=="System.Windows.Forms.TextBox") //3。如果当前控件的类型是TextBox
((TextBox)co).Text=""; } //4 。把当前控件co强制转换成TextBox类型。并把Text属性赋值为空。但是我需要的功能是1,遍历控件 2得到当前控件的类型,3把当前控件强制转换成第二步得到的类型。(如上代码中是直接强制转换成TextBox类型了。代码写死了的。我需要的是把当前控件转换成第二步得到的类型。 得到什么类型就转换成什么类型,不一定非是TextBox类型) 。
foreach(Control co in this.Controls) //1。遍历控件
{
mytext=co.GetType().ToString(); //2。得到当前控件的类型
if(mytext=="System.Windows.Forms.TextBox") //3。如果当前控件的类型是TextBox
((TextBox)co).Text=""; } //4 。把当前控件co强制转换成TextBox类型。并把Text属性赋值为空。但是我需要的功能是1,遍历控件 2得到当前控件的类型,3把当前控件强制转换成第二步得到的类型。(如上代码中是直接强制转换成TextBox类型了。代码写死了的。我需要的是把当前控件转换成第二步得到的类型。 得到什么类型就转换成什么类型,不一定非是TextBox类型) 。
{
foreach (var c in Controls)
{
if (c.GetType() == ControlType)
{
...
}
}
}
使用:
foo(label1.GetType());
或者
foo(typeof(Label));
foreach(Control co in this.Controls)
{
if(co is TextBox)
{
((TextBox)co).Text = "";
}
}
{
//假设你控件的名字符合约定的前缀
if (c.Name.SubString(1, 3) == "txt") c.Text = "123";
if (c.Name.SubString(1, 3) == "lst") c.Items.Add("123");
}
你就判断一次就搞定的话你定义个什么变量来接受转换的结果呢?
用object接受?那岂不是白转换了
而且就算你的得到了那个你想要的结果,你接下来的代码怎么写?
不同的控件要执行不同的操作啊所以还老实点吧
if (co is Button)
(sender as Button).Text = "test";
else if (co is TextBox)
(sender as TextBox).Text = "test";
else
...
给 Text 赋值用得着转换类型吗?
真是的