你这样做嘛,做一个方法,强行给控件的DataSource属性赋值,若该控件没这个属性肯定会报错的,你截获这个错误就好了,如下面的代码
private bool IsDataSource(Control m_Control)
{
   try
   {
       if (m_Control is TextBox)
       {
         ((TextBox)m_Control).DataSource = ds.Tables[0];  
       }
       elseif (....)
       {
          ......
       }   
       return true;
   } 
   catch(Exception)
   {
       return false;
   }
}