Winfrom程序中如何不通过获取所有控件的id来获取所有控件的Text文本的值
用父控件循环子控件,或者子控件Text的值即可
获取text不用id,但是循环遍历是需要的
https://bbs.csdn.net/topics/310047728?
很多年前的东西,循环构造IEnumerable,然后你可以用linq查询了,where(p=>p is TextBox || p is label).Select(p=>p.Text)
这么多年了,我修改一下老p东西
var 你要的结果 = this.Controls.AsFlat<Control>(p => p.Controls).Select(p => p.Text).ToList();
//这种东西当然也可以应用到所有层级数据,比如 treenode
TreeView tv = new TreeView();
var test = tv.Nodes.AsFlat<TreeNode>(tn => tn.Nodes);
public static class ControlExtension
{
//把老p的换个名字,这东西以前没名字,现在其实有名字,叫层级数据结构扁平化
//所以我这里就写成FlatCotnrols,同时把其实所有层级数据都行
//我们可以写成通用
public static IEnumerable<T> AsFlat<T>(this IEnumerable Controls,Func<T,IEnumerable> Chirldsfun)
{
foreach (T control in Controls)
{
yield return control;
foreach (T x1 in Chirldsfun(control).AsFlat<T>(Chirldsfun))
{
yield return x1;
}
}
}
}