我正在生成x个按钮,我给它们一个唯一的名字。
在生成所有这些之后,我想编辑其中一个而不重新生成它们,所以我想知道我是否可以按名称获取组件?
我正在使用WinForms
答案 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
中