WinForm实现按名称递归查找控件的方法
程序员文章站
2024-02-13 10:08:10
本文所述实例主要实现了winform实现按名称递归查找控件的功能,在c#项目开发中有一定的应用价值,分享给大家供大家参考借鉴。
关键代码如下:
/// <...
本文所述实例主要实现了winform实现按名称递归查找控件的功能,在c#项目开发中有一定的应用价值,分享给大家供大家参考借鉴。
关键代码如下:
/// <summary> /// 向下递归查找控件 /// </summary> /// <param name="parentcontrol">查找控件的父容器控件</param> /// <param name="findctrlname">查找控件名称</param> /// <returns>若没有查找到返回null</returns> public static control downrecursivefindcontrol(this control parentcontrol, string findctrlname) { control _findedcontrol = null; if (!string.isnullorempty(findctrlname) && parentcontrol != null) { foreach (control ctrl in parentcontrol.controls) { if (ctrl.name.equals(findctrlname)) { _findedcontrol = ctrl; break; } else { if (ctrl.controls.count > 0) _findedcontrol = downrecursivefindcontrol(ctrl, findctrlname); } } } return _findedcontrol; } /// <summary> /// 将control转换某种控件类型 /// </summary> /// <typeparam name="t">控件类型</typeparam> /// <param name="control">control</param> /// <param name="result">转换结果</param> /// <returns>若成功则返回控件;若失败则返回null</returns> public static t cast<t>(this control control, out bool result) where t : control { result = false; t _castctrl = null; if (control != null) { if (control is t) { try { _castctrl = control as t; result = true; } catch (exception ex) { debug.writeline(string.format("将control转换某种控件类型异常,原因:{0}", ex.message)); result = false; } } } return _castctrl; }
测试代码如下:
bool _sucess = false; checkbox _finded = this.downrecursivefindcontrol("checkbox1").cast<checkbox>(out _sucess); if (_sucess) { messagebox.show(_finded.name); } else { messagebox.show("not finded."); }
希望本文所述实例能够对大家的c#程序设计有所帮助!
上一篇: Servlet 过滤器详细介绍