C# 更改动态声明的按钮的属性

C# 更改动态声明的按钮的属性,c#,C#,我在c#中动态创建了一个按钮。 代码基本上是这样的: Button b = new Button(); b.Name = "dynabutt"; this.Controls.Add(b); button2.Click += (s,e) => { this.Controls["dynabutt"].BackColor = Color.Blue; }; 我想要一个非动态按钮button2,这样当我点击button2时, 动态按钮的颜色将更改。可能吗?谢谢 您只需将事件处理程序附加到单击按钮

我在c#中动态创建了一个按钮。 代码基本上是这样的:

Button b = new Button();
b.Name = "dynabutt";
this.Controls.Add(b);
button2.Click += (s,e) => { this.Controls["dynabutt"].BackColor = Color.Blue; };
我想要一个非动态按钮button2,这样当我点击button2时,
动态按钮的颜色将更改。可能吗?谢谢

您只需将事件处理程序附加到
单击
按钮2
的事件。如果您知道动态按钮的名称,则只需从控件集合中访问它并更改其颜色,如下所示:

Button b = new Button();
b.Name = "dynabutt";
this.Controls.Add(b);
button2.Click += (s,e) => { this.Controls["dynabutt"].BackColor = Color.Blue; };

当然,只需在全局某个位置声明变量b,使其在方法外可见(或分配给其他变量),例如:

public class Form1 : Form
{
    public Button button1 = null;
    public void SomeMethod()
    {
        Button b = new Button();
        b.Name = "dynabutt";
        this.Controls.Add(b);
        button1 = b;
        button1.BackColor = Color.Blue;
    }
    public void button2_Click(...)
    {
        if (button1 != null) button1.BackColor = Color.Red;
    }
}

你试过什么?这并不是很难做到,但如果您还没有尝试任何东西,我不想为您详细说明所有内容。在
按钮2
的单击事件中,您需要识别对
b
的引用,然后设置该引用的属性。可以将
b
设为类级成员或将其放在其他共享位置?可能在表单上的
控件
集合中动态查找
b
?如果在
somethod()
之前执行
button2\u Click()
,您将得到
NullReferenceException
对不起,我忘了。:)可能的
NullReferenceException