winform查找控件


        /// <summary>
        /// 查找指定类型控件
        /// </summary>
        /// <typeparam name="T">待查找控件类型</typeparam>
        /// <param name="ctl">控件所在容器</param>
        /// <param name="act">找到后执行的操作</param>
        private void FindCtl<T>(Control ctl, Action<T> act) where T : Control
        {
            T tmp = null;
            Stack<Control> ctls = new Stack<Control>();
            for (int i = 0; i < ctl.Controls.Count; i++)
            {
                if (ctl.Controls[i].Controls.Count > 0 || (ctl.Controls[i] as T) != null)
                {
                    ctls.Push(ctl.Controls[i]);
                }
            }

            do
            {
                Control tmpCtl = ctls.Pop();
                tmp = tmpCtl as T;
                if (tmp == null && tmpCtl.Controls.Count > 0)
                {
                    for (int i = 0; i < tmpCtl.Controls.Count; i++)
                    {
                        ctls.Push(tmpCtl.Controls[i]);
                    }
                }
                if (tmp != null)
                {
                    act(tmp);
                }
            } while (ctls.Count > 0);
        }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM