foreach (control c in contros)
{
if(c.gettype()==typeof(dataadapter)
}

解决方案 »

  1.   

    private void button1_Click(object sender, System.EventArgs e)
    {
    this.FindCtrl(this);
    }
    private void FindCtrl( Control control )
    {
    foreach( Control c in control.Controls )
    {
    //if(c is TextBox)
    //{
    //c.Text = "";
    //}
                      //........这里加上你的控制代码
    if (c.Controls != null)
    {
    FindCtrl( c );
    }
    }
    }拷贝海宁的
      

  2.   

    好像controls集合中是不包括dataadapter组件的
      

  3.   

    创建一个DataAdapter的ArrayList,把可能用到的添加进去,然后在检查时foreach一下。臆测滴,不知道是否可行 -___-#
      

  4.   

    to  trnbo(【没有蛀牙】→闭关修行)我现在用的就是这个方法,有没有其他好点的方法了?
      

  5.   

    没有别的好办法了,否则就得试试反射,取得当前assembly的类型的getfields(),由返回的fieldinfo来判断是不是typeof(adapter)
      

  6.   

    顶liduke(天下有雪) 的方法不错
      

  7.   

    liduke(天下有雪)
    能详细说下吗?
      

  8.   

    楼上的,在form的controls集合中是没有dataadapter组件的
      

  9.   

    Type t = Form1.GetType();
    FieldInfo[] fields = t.GetFields();
    int i;
    DataAdapter adapter = null;
    for (i = 0 ; i < fields.GetLength();++i)
    {
         if (fiedls[i].GetType().Name == "DataAdapter")//找到DataAdapter
         { 
              adapter = (DataAdapter )fields[i].GetValue(DataAdapter );
         }
    }
      

  10.   

    修改:         adapter = (DataAdapter )fields[i].GetValue(Form1);