我需要将一个事件处理程序附加到一个对象,并将此代码放在一个按钮单击事件上。但是,我注意到这会导致同一事件在每次点击时多次附加。
有没有办法在类创建上运行一段代码?有问题的类是静态类btw。
我可以做类似的事情:
if (bool == false)
{
attach event handler;
bool = true;
}
不确定这是否是正确的方法。感谢。
答案 0 :(得分:3)
你使用constructor - 它将在创建类时运行。
构造函数是在创建类或结构体的对象时执行的类方法。它们与类或结构具有相同的名称,通常初始化新对象的数据成员。
对于静态类,请使用static constructors:
静态构造函数用于初始化任何静态数据,或执行仅需要执行一次的特定操作。在创建第一个实例或引用任何静态成员之前会自动调用它。
答案 1 :(得分:3)
有static constructors,(原则上)每个课程只运行一次。
这样的事情:
public static class MyStaticClass
{
public static int MyStaticProperty;
//no accessors required, as this is never explicitly invoked
static MyStaticClass() //no parameters either
{
MyStaticProperty = 100;
}
}
....
//writes: 100
Console.WriteLine(MyStaticClass.MyStaticProperty);
但是,如果构造函数不会这样做,因为你有一些需要设置的参数,或者有一些必须要做的先决条件步骤,我确实会推荐一个私有布尔检查,就像你做的那样
答案 2 :(得分:1)
试
if(Button1.Click == null)
Button1.Click += new System.EventHandler(this.myEventHandler);