C#在接口中定义事件

定义接口中事件和接口参数

namespace ImplementInterfaceEvents  
{  
    public interface IDrawingObject  
    {  
        event EventHandler ShapeChanged;  
    }  
    public class MyEventArgs : EventArgs
    {  
        // class members  
    }  
    public class Shape : IDrawingObject  
    {  
        public event EventHandler ShapeChanged;  
        void ChangeShape()  
        {  
            // Do something here before the event…  

            OnShapeChanged(new MyEventArgs(/*arguments*/));  

            // or do something here after the event.
        }  
        protected virtual void OnShapeChanged(MyEventArgs e)  
        {  
            ShapeChanged?.Invoke(this, e);  
        }  
    }  
}

订阅实现:

private Shape shape;
public Form1()
{
      InitializeComponent();
      shape = new Shape();
      shape.ShapeChanged += Shape_ShapeChanged;
}

private void Shape_ShapeChanged(object sender, EventArgs e)
{
      MessageBox.Show((e as MyEventArgs).Name);
}

//某个按钮事件里启动
private void navBarItem1_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
{
      shape.ChangeShape();
}

 

posted @ 2024-07-05 08:35  东经115  阅读(1)  评论(0编辑  收藏  举报