我有一个关闭事件的子窗口,以防止意外关闭。在这个子窗口中,我有一个按钮点击处理程序,它将执行操作,然后关闭子窗口并向父窗口报告新信息。不幸的是,这个按钮操作也会调用关闭事件。我怎样才能绕过这个特定的窗口关闭事件,只是报告说的信息?从按钮绕过窗口关闭事件点击
我刚刚读完,似乎有点混乱。如果需要,我会编辑。
我有一个关闭事件的子窗口,以防止意外关闭。在这个子窗口中,我有一个按钮点击处理程序,它将执行操作,然后关闭子窗口并向父窗口报告新信息。不幸的是,这个按钮操作也会调用关闭事件。我怎样才能绕过这个特定的窗口关闭事件,只是报告说的信息?从按钮绕过窗口关闭事件点击
我刚刚读完,似乎有点混乱。如果需要,我会编辑。
如果我理解你的话,你可以在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();
}
你应该检查你的设计。
你可以做这样的事情:
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();
}
有像ForceClosed属性默认为真,并点击按钮设置为是假的。关闭事件触发时,请检查ForceClosed是否为真。如果是这样,然后执行任何所需的措施来防止意外关闭。
看来有很多不同的解决方案来解决这个问题,我几乎只是实现了我看到的第一个工作。感谢大家。 – ecMode