提高事件不起作用 - C#

时间:2018-03-27 03:10:34

标签: c# events

似乎无法让这个工作不确定为什么。

在我的一个班级上有这个:

    public event Action CloseWindowEvent = delegate { };

    private void Close()
    {
        CloseWindowEvent();
    }

在我订阅的另一个课程上:

    remarkViewModel.CloseWindowEvent += CloseRequested;

永远不会调用该方法:

    private void CloseRequested()
    {
        dialog.CloseDetailDialog();
    }

谢谢。

3 个答案:

答案 0 :(得分:0)

您可以检查Call to Close()方法发生的代码吗?我在代码中没有看到任何理论错误。看它适用于简化模型:

enter image description here

答案 1 :(得分:0)

它肯定被称为。这是所提出事件的快照。

enter image description here

答案 2 :(得分:0)

在C#中,必须调用事件,此外,它们还有两个预定义的参数:

对象发件人和EventArgs e

此处此关键字是指触发事件的对象, EventArgs.Empty 向该事件发送空参数,您也可以通过替换来实例化该类带有新EventArgs

的EventArgs.Empty
public event EventHandler CloseWindowEvent;

private void CloseEvent()
{
    CloseWindowEvent?.Invoke(this, EventArgs.Empty);
}

,其中

remarkViewModel.CloseWindowEvent += CloseRequested;

private void CloseRequested(object sender, EventArgs e)
{

}