将一个类中定义的EventHandler附加到定义在不同类中的元素

时间:2017-07-28 16:01:29

标签: c# wpf events

搜索语法但无法找到任何内容。我有一个在我的主文件中定义的事件处理程序,我想将它附加到我在另一个类中创建的元素。我知道在类中添加事件处理程序的语法是

element.PreviewMouseDown += EventHandlerName;

但我不确定在单独的类中添加处理程序的语法是什么。我试过了

element.PreviewMouseDown += MainWindow.EventHandlerName;

但这是无效的。任何帮助表示赞赏

1 个答案:

答案 0 :(得分:1)

您需要对要接收处理程序的实例的引用。您不能引用类本身(除非处理程序是静态方法):

void Main()
{
    var a = new A();
    var b = new B();

    a.Event += b.Handler; // reference to instance method
}

class A
{
    public event EventHandler Event;
}

class B
{
    public void Handler(object sender, EventArgs args)
    {

    }
}

如果你有一个静态处理程序,它就像它的样子:

void Main()
{
    var a = new A();

    a.Event += B.Handler; // reference to a static method
}

class A
{
    public event EventHandler Event;
}

class B
{
    public static void Handler(object sender, EventArgs args)
    {

    }
}