从按钮旁路旁路窗口关闭事件

时间:2011-06-22 20:15:22

标签: c# wpf events

我有一个带有关闭事件的子窗口,以防止意外关闭。在这个子窗口中,我有一个按钮单击处理程序,它将执行操作然后关闭子项并向父窗口报告新信息。不幸的是,这个按钮动作也调用了结束事件。如何绕过此特定窗口关闭事件并仅报告所述信息?

我刚看过来,看起来有点令人困惑。如果需要,我会编辑。

3 个答案:

答案 0 :(得分:2)

如果我理解正确,您可以将On {Cancel - 属性设置为true,因此窗口不会关闭。现在,您可以查找从按钮单击事件关闭窗口的可能性,尽管您有此OnClosing事件。对吗?
可能是定义您在buttons事件中设置的成员变量。在OnClosing中,如果未设置此成员变量,则仅将e.Cancel设置为true。

class YourClass{
    bool m_closeAnyway;
    void OnClosing(....){
         if(!m_closeAnyway){
             e.Cancel=true;
         }
    }
    void ButtonClickEventHandler(...){
        m_closeAnyway=true;
        Close();
        DoTheRest();
    }

答案 1 :(得分:1)

您应该检查一下您的设计。

你可以这样做:

public void ClosingEvent (...)
{
    if(this.ToValidate)
    {
        this.Validate();
        // Or e.Cancel; I don't know exactly know what you want to prevent...
    }
}

public void ButtonClick(...)
{
   this.ToValidate = false;
   this.Close();
}

答案 2 :(得分:1)

将ForceClosed等属性默认为true,并将按钮单击设置为false。当关闭事件触发时,检查ForceClosed是否为真。如果是这样,那么执行任何防止意外关闭所需的操作。