我需要一种方法来动态收集服务器端 ASP.net WebForms 中自定义 UserContorl 内的所有 TextBox
我认为这会起作用:
foreach (var control in Page.Controls)
{
var textBox = control as TextBox;
if (textBox != null && textBox.MaxLength > 0)
{
// stuff here
}
}
但它并没有像我想象的那样,而且我不知道如何获取该信息。
那么,如何动态获取 ASP.net Web 表单中自定义 UserControl 的服务器端的所有文本框?
最佳答案
您需要递归方法,因为并非所有 1 级子项都一定是文本框(取决于用户控件中的控件/容器层次结构):
private IEnumerable<TextBox> FindControls(ControlCollection controls)
{
List<TextBox> results = new List<TextBox>();
foreach(var control in controls)
{
var textBox = control as TextBox;
if (textBox != null && textBox.MaxLength > 0)
{
results.Add(textBox);
}
else if(textBox == null)
{
results.AddRange(FindControls(control.Controls));
}
}
return results;
}
获得结果后,您可以迭代它们并执行您需要执行的操作。
关于c# - 如何获取自定义用户控件内的所有文本框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25090105/