我有一个带有关闭事件的子窗口,以防止意外关闭。在这个子窗口中,我有一个按钮单击处理程序,它将执行操作然后关闭子项并向父窗口报告新信息。不幸的是,这个按钮动作也调用了结束事件。如何绕过此特定窗口关闭事件并仅报告所述信息?
我刚看过来,看起来有点令人困惑。如果需要,我会编辑。
答案 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是否为真。如果是这样,那么执行任何防止意外关闭所需的操作。