Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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,我生成了x个按钮,我给它们取了一个唯一的名字 在所有这些都生成之后,我想编辑其中一个组件而不重新生成它们,所以我想知道是否可以通过其名称获取组件 我正在使用WinForms是: Control myControl = Controls.Find("textBox1"); 现在,请注意,必须对Find执行正确的强制转换,因为Find返回一个控件。您可以使用表单的属性(或表单上的某个容器控件)。使用LINQ,您可以选择按钮,然后找到具有所需名称的第一个按钮: var button1 = Contr

我生成了x个按钮,我给它们取了一个唯一的名字

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

我正在使用WinForms是:

Control myControl = Controls.Find("textBox1");
现在,请注意,必须对Find执行正确的强制转换,因为Find返回一个控件。

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

var button1 = Controls.OfType<Button>().FirstOrDefault(b => b.Name == "button1");
生成所有这些内容后,我想编辑其中一个,而不使用 重新生成它们,所以我想知道是否可以通过 名字

确保添加对:linq的引用

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

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

您在使用什么?WinForms、WPF、WEB???您是否尝试在代码编辑器中键入按钮名称?@SergeyBerezovskiy该按钮位于不同的范围内这看起来很整洁。但是,当我尝试将其用作按钮时,会得到一个NullReferenceException。(按钮1变量)。我是否应该检查它是否是一个按钮,即使它被称为类型?若并没有搜索名为的按钮,FirstOrDefault将返回默认值。按钮的默认值为空。所以,是的,您应该检查null以验证是否找到了按钮。另外,请确保您正在使用已添加按钮的控件的控件集合,以确保在
ControlCollection
中存在
Find(string)
方法?@SergeyBerezovskiy编辑的答案缺少用于搜索所有子项的参数。不仅参数-现在返回类型错误-
Find(string,bool)
返回控件数组
Control[] controls = Controls.Find("button1", true);
if (controls.Length > 0)
{
    Button button1 = controls[0] as Button;
}
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.
}
Button btn1 = (Button)(Controls.Find("btnName"));