運用遞迴函式找到一個伺服器控制項,我們時常搞不清楚我們的控制項到底在控制項樹的什麼地方!看到老外寫了一篇文章,呵呵!不過用遞迴演算法,效率差了些,一般清楚控制項樹結構的情況下,還是直接用FindControl函數好一點!
This recursive function finds a control on a form by its name.
//written in C#
/// <summary>
///Recursive function to find control on the form by its name
/// </summary>
private Control _co;
private Control _find_control(Control _c, string _name)
{
if (_co != null) return _co;
IEnumerator _ir = _c.Controls.GetEnumerator();
_ir.Reset();
while (_ir.MoveNext())
{
if (_co != null) break;
if (((Control)_ir.Current).Name == _name)
{
_co = ((Control)_ir.Current);
break;
}
_find_control(((Control)_ir.Current),_name);
}
return _co;
}
//usage examples
Form1 _fm = (Form1)this.FindForm();
_co = null;
DataGrid _dg = (DataGrid)_find_control((Control)_fm,"GRID1");
_co = null;
Label _lbl = (Label)_find_control((Control)_fm,"Label1");
By Yuriy Bas in www.devx.com