贾林朋 发表于 2014-8-31 18:38:38

窗体控件选择

public static class WinFormControlSelector
    {
      /// <summary>
      /// 遍历控件得到所有类型的控件的集合
      /// </summary>
      /// <typeparam name="T">控件类型</typeparam>
      /// <param name="control">控件</param>
      /// <param name="filter">过滤条件,参数为一个委托类型的变量,
      /// 执行一个具有一个参数并且返回bool类型的变量,当返回值为true的时候添加到选择集内当查询结果为
      /// false的时候不添加到返回的结果集</param>
      /// <returns>控件类型集合</returns>
      public static IEnumerable<T> GetControls<T>(this System.Windows.Forms.Control control, Func<T, bool> filter) where T : System.Windows.Forms.Control
      {
            foreach (System.Windows.Forms.Control c in control.Controls)
            {
                if (c is T && (filter == null || filter(c as T)))
                {
                  yield return c as T;
                }
                foreach (T _t in GetControls<T>(c, filter))
                  yield return _t;
            }
      }

      /// <summary>
      /// 对集合中的所有元素进行操作
      /// </summary>
      /// <typeparam name="T"> 元素类型</typeparam>
      /// <param name="source">数据源</param>
      /// <param name="action">操作方式,参数为一个委托类型的变量,执行一个没有返回值的方法</param>
      public static void ForEach<T>(this IEnumerable<T> source, Action<T> action)
      {
            foreach (var item in source)
                action(item);
      }
    }

窗体控件选择代码注释非常详细 实现选择窗体内某个容器内的所有制定类型的控件并对他 它 进行相应的操作


详细信息参考 http://www.cnblogs.com/ldp615/archive/2009/08/07/1541404.html
页: [1]
查看完整版本: 窗体控件选择