window forms遍历窗体所有控件

/// <summary>

        /// 只遍历控件的子控件,不遍历孙控件

        ///当控件有子控件时,需要用递归的方法遍历,才能全部列出控件上的控件

        /// </summary>

        /// <typeparam name="T">要匹配的控件类型</typeparam>

        /// <param name="control">要遍历的了控件</param>

        /// <param name="controlsName">要匹配的控件名</param>

        /// <returns></returns>

        public static Control GetControl<T>(Control control, string controlsName)

        {

            if (control == null) return null;

            Control _control;

            for (int i = 0; i < control.Controls.Count; i++)

            {

                _control = control.Controls[i];

                if (_control == null) return null;

                if (_control.Name == controlsName && _control is T)

                    return _control;

                if (_control.HasChildren)

                {

                    _control = GetControl<T>(_control, controlsName);

                    if (_control != null)

                        return _control;

                }

            }

            return null;

        }

        /// <summary>

        /// 遍历窗体所有控件

        /// </summary>

        /// <typeparam name="T">要匹配的控件类型</typeparam>

        /// <param name="form">窗体名</param>

        /// <param name="controlsName">要匹配的控件名</param>

        /// <returns></returns>

        public static Control GetControl<T>(Form form, string controlsName)

        {

            Control _Control = null;

            for (int i = 0; i < form.Controls.Count; i++)

            {

                _Control = GetControl<T>(form.Controls[i], controlsName);

                if (_Control != null)

                    return _Control;

            }

            return null;

        }

使用方法:

Control _control;

 _control = GetControl<TextBox>(customer, "txtValue");

    if(_control!=null)

           ((TextBox) _control).Text = "text";

 _control = GetControl<ComboBox>(customer, "ddl");

    if (_control != null)

            ((ComboBox)_control).SelectedIndex = 0;

posted @ 2011-10-21 13:15  HTL  阅读(600)  评论(0编辑  收藏  举报
htl