2011-06-22 50 views
0

我有一个关闭事件的子窗口,以防止意外关闭。在这个子窗口中,我有一个按钮点击处理程序,它将执行操作,然后关闭子窗口并向父窗口报告新信息。不幸的是,这个按钮操作也会调用关闭事件。我怎样才能绕过这个特定的窗口关闭事件,只是报告说的信息?从按钮绕过窗口关闭事件点击

我刚刚读完,似乎有点混乱。如果需要,我会编辑。

+0

看来有很多不同的解决方案来解决这个问题,我几乎只是实现了我看到的第一个工作。感谢大家。 – ecMode

回答

2

如果我理解你的话,你可以在OnClosing Cancel -property设置为true,因此窗口不会关闭。现在,您可以通过按钮点击事件来关闭窗口,尽管您有此OnClosing事件。对?
可能性是定义您在按钮事件中设置的成员变量。在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

你应该检查你的设计。

你可以做这样的事情:

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(); 
} 
1

有像ForceClosed属性默认为真,并点击按钮设置为是假的。关闭事件触发时,请检查ForceClosed是否为真。如果是这样,然后执行任何所需的措施来防止意外关闭。