我有一个Form
,其中包含一些我动态创建的TableLayoutPanel
(列表面板)。
每个TableLayoutPanel
都有一个唯一的标签。实际上,每个面板都有Lable
,而这个Lable
有Name = "lable_name"
我需要在Label
中更新此确切的TableLayoutPanel
。
public void UpdateLable(string tag, string newText)
{
foreach(var tlp in Views)
{
if (tlp.Tag.ToString().Equals(tag))
{
var lable = tlp.findViewByName("lable_name") as Label;
lable.Text = newText;
}
}
}
但是我找不到像findViewByName()
所以,问题是-如何按名称查找视图?
答案 0 :(得分:2)
创建如下方法
public static IEnumerable<Control> GetControlsOfType<T>(Control control)
{
var controls = control.Controls.Cast<Control>();
return controls.SelectMany(ctrl => GetControlsOfType<T>(ctrl)).Concat(controls).Where(c => c is T);
}
像
一样使用Var control= GetControlsOfType<Label>(yourView).FirstOrDefault(x => x.Tag == tag);
if(control != null)
control.Text = newText
答案 1 :(得分:1)