• [原] c# winform controls 查找指定类型子控件的扩展方法


    //调用
    this.Controls.Find<Button>(true).ForEach((btn) => { btn.Enabled = false; });
    
    
    //定义
    public static class FormControlExtensions
        {
            /// <summary>
            /// 获得指定类型的孩子控件
            /// </summary>
            /// <typeparam name="TChild">子控件类型</typeparam>
            /// <param name="controlCollection"></param>
            /// <param name="searchAllChildren">如果搜索所有子控件,则为 true;否则为 false。默认为false。</param>
            /// <returns></returns>
            public static List<TChild> Find<TChild>(this Control.ControlCollection controlCollection, bool searchAllChildren = false) 
                where TChild : Control
            {
                var children = new List<TChild>();
                _Find(controlCollection, ref children, searchAllChildren);
                return children;
            }
    
            /// <summary>
            /// 查询指定类型的子控件(支持递归)
            /// </summary>
            /// <typeparam name="TChild">子控件类型</typeparam>
            /// <param name="controlCollection"></param>
            /// <param name="children"></param>
            /// <param name="searchAllChildren">如果搜索所有子控件,则为 true;否则为 false。默认为false。</param>
            private static void _Find<TChild>(Control.ControlCollection controlCollection, ref List<TChild> children, bool searchAllChildren = false) 
                where TChild : Control
            {
                foreach (Control control in controlCollection)
                {
                    if (control is TChild)
                    {
                        children.Add((TChild)control);
                    }
    
                    if (control.Controls.Count > 0 && searchAllChildren)
                    {
                        _Find(control.Controls, ref children, searchAllChildren);
                    }
                }
            }
        }
    

      

  • 相关阅读:
    poj1466
    vc剪贴板
    【转帖】BCGControlBar使用心得如何捕获Workspace bar类上的树控件的消息
    Windows API一日一练
    BCG 使用CBCGPToolbarFontSizeCombo 时下拉框无内容
    VB API教程 王国荣
    用API 现成的函数处理工程退出时的文件保存
    VC 剪贴板操作
    BCG中使用状态栏显示状态信息
    界面库
  • 原文地址:https://www.cnblogs.com/luqingfei/p/13489764.html
Copyright © 2020-2023  润新知