按给定名称编辑按钮

时间:2014-03-24 13:14:55

标签: c# winforms

我正在生成x个按钮,我给它们一个唯一的名字。

在生成所有这些之后,我想编辑其中一个而不重新生成它们,所以我想知道我是否可以按名称获取组件?

我正在使用WinForms

4 个答案:

答案 0 :(得分:2)

是:

Control myControl = Controls.Find("textBox1");

现在,请注意你必须找到合适的施法母鸡,因为Find会返回一个控件。

答案 1 :(得分:0)

您可以使用表单的Controls属性(或表单上的某个容器控件)。使用LINQ,您可以选择按钮,然后找到具有所需名称的第一个按钮:

var button1 = Controls.OfType<Button>().FirstOrDefault(b => b.Name == "button1");

或者,如果您想以递归方式搜索子控件

 var button1 = Controls.Find("button1", true)
                       .OfType<Button>()
                       .FirstOrDefault();

如果没有LINQ,您可以使用ControlCollection的方法Find(string key, bool searchAllChildren)

Control[] controls = Controls.Find("button1", true);
if (controls.Length > 0)
{
    Button button1 = controls[0] as Button;
}

答案 2 :(得分:0)

  

生成所有这些之后,我想要编辑其中一个而不用   重新生成它们,所以我想知道我是否可以通过它获得一个组件   命名

var myButton = Controls.Find("buttonName", true).FirstOrDefault(); //Gets control by name
if(myButton != null)
{
    if (myButton.GetType() == typeof(Button)) //Check if selected control is of type Button
    {
       //Edit button here...
    }
    else
    {
       //Control isn't a button
    }
}
else
{
    //Control not found.
}

确保添加对linq。

的引用

答案 3 :(得分:0)

Button btn1 = (Button)(Controls.Find("btnName"));

这将获得所需的按钮,并将按钮属性保存到新的按钮btn1