Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过标记查找视图?_C#_Winforms - Fatal编程技术网

C# 如何通过标记查找视图?

C# 如何通过标记查找视图?,c#,winforms,C#,Winforms,我有一个表单,其中包含一些我动态创建的表格布局面板(列表面板) 每个TableLayoutPanel都有一个唯一的标记。实际上,每个面板都有标签,而这个标签有Name=“Lable\u Name” 我需要在表格布局面板中更新这个确切的标签 public void UpdateLable(string tag, string newText) { foreach(var tlp in Views) {

我有一个
表单
,其中包含一些我动态创建的
表格布局面板
(列表面板)

每个
TableLayoutPanel
都有一个唯一的标记。实际上,每个面板都有
标签
,而这个
标签
Name=“Lable\u Name”

我需要在
表格布局面板
中更新这个确切的
标签

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()这样的方法


所以,问题是-如何按名称查找视图?

创建一个方法,如下所示

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);
}
公共静态IEnumerable GetControlSoftType(控件)
{
var controls=control.controls.Cast();
返回控件。选择many(ctrl=>GetControlsOfType(ctrl)).Concat(控件)。其中(c=>c是T);
}
像这样使用它

Var control= GetControlsOfType<Label>(yourView).FirstOrDefault(x => x.Tag == tag);

if(control != null)
   control.Text = newText
Var-control=GetControlsOfType(yourView).FirstOrDefault(x=>x.Tag==Tag);
if(控件!=null)
control.Text=newText

TableLayoutPanel
类中没有直接的方法。但是每个
控件都有子控件的属性集合

该专用集合具有允许按名称获取子项的方法:

var label = tlp.Controls.Find("lable_name", true)[0] as Label;

就我所见,方法
Find
返回数组,所以它应该是这样的
var label=tlp.Controls.Find(“lable\u name”,true)[0]作为标签
,对吗?我不理解你的方法,
GetControlsOfType()
作为参数
Control
,但是你写的例子
yourViews
(像一个数组)应该是
yourView
?但是如果它只是一个控件,那么是哪一个呢?因为实际上我的问题是
如何从控件中找到一个控件?
发送包含所有视图的表单/控件的实例