在课堂上只运行一段代码

时间:2012-03-05 10:38:44

标签: c# winforms

我需要将一个事件处理程序附加到一个对象,并将此代码放在一个按钮单击事件上。但是,我注意到这会导致同一事件在每次点击时多次附加。

有没有办法在类创建上运行一段代码?有问题的类是静态类btw。

我可以做类似的事情:

if (bool == false)
{
attach event handler;
bool = true;
}

不确定这是否是正确的方法。感谢。

3 个答案:

答案 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);