如何在 C# 中添加事件



我正在学习 C# 中的事件处理,并且刚刚学习

    delegates

我正在寻找一种将一些事件添加到我的 GUI 应用程序的方法。 例如,检查以下代码:-

    private void label1_Click(object sender, EventArgs e)
    {
      MessageBox.Show("Hello World") ;  
    }

每当我单击标签标签 1 时,此函数都会显示包含内容 HelloWorld 的消息框。我想知道,我们如何添加各种其他事件,例如将鼠标悬停在标签上和其他此类事件。另外,参数有什么用

    sender and e

label1.OnMouseHover += myDelegate会将您的委托添加到鼠标悬停事件中。

请参阅事件列表。

label1.Click += new System.EventHandler(label1_Click);

如果您创建一个类并向其中添加自己的事件,则会得到更好的结果。

默认的"e"是System.EventArgs的实例。你可以从中得出你自己的例如

public class MyEventArgs : System.EventArgs
{
   public string EventData {get; private set;}
   public MyEventArgs(String argEventData)
   {
       EventData = argEventData;
   }
}

然后在类中使用上述内容

public class SomeFellaWithAnEvent
{
   public event EventHandler<MyEventArgs> OnMyEvent;
   private int _value;
   public int Value 
   { 
     get {return _value;} 
     set 
     {
       if (_value != value) 
       {
          _value = value;
          DoEvent(_value.ToString();
       }
     }
   }

   protected void DoEvent(String argData)
   {
      if (OnMyEvent != null)
      {
          OnMyEvent(this,new MyEventArgs(argData)) 
      }
   } 
}

所以现在你有一些东西,如果你给了它一个处理程序,如果值被改变,它会引发一个事件

例如

SomeFellaWithAnEvent o = new SomeFellaWithAnEvent()
o.OnMyEvent += someThingChanged();
o.Value = 22;
private void somethingChanged(Object sender, MyEventArgs e)
{
   // do something with it.
   // debug this and you'll see sender is the o instance above, and e is the instance
   // of MyEventArgs created in the DoEvent method and has a property set to "22"
}   

从工具箱向现有控件添加更多事件处理程序。单击属性检查器中的事件选项卡(闪电按钮),然后双击该值。

或在代码视图中键入 label1。点击 +=,然后按两次 Tab 键。

相关内容

  • 没有找到相关文章

最新更新