【问题标题】:Does the Event "Close childWindow" exists?“关闭子窗口”事件是否存在?
【发布时间】:2013-02-19 09:04:37
【问题描述】:

我有一个问题:

当我们点击子窗口右上角的标记时,“关闭子窗口”事件是否存在?

因为我想取消以这种方式关闭 ChildWindow 时可以完成的所有更改。

我可以使用我创建的按钮关闭窗口,但用户仍然可以通过其他方式关闭 ChildWindow,因此不会取消任何更改的数据。

谢谢。

【问题讨论】:

  • 你能处理关闭事件吗?请参阅msdn.microsoft.com/en-us/library/… - 您应该能够有条件地将参数 CancelEventArgs 的 Cancel 属性设置为 true 以防止在您的自定义事件处理程序中关闭子窗口。
  • 谢谢,这正是我正在寻找的。​​span>

标签: c# xaml silverlight-4.0 childwindow


【解决方案1】:

抱歉,windows标准窗体上没有“关闭子窗口”之类的事件。您可以做的是自己创建它,每次打开新窗口时,您都可以从该新窗口 FormClosed 事件中抛出此事件。

public event EventHandler CloseChildWindow;

然后当你打开新窗口时。

Form1 frm = new Form1();
frm.FormClosed += (o, e) =>
     {
         if(CloseChildWindow!= null)
              CloseChildWindow(o, e);
     };

【讨论】:

  • ChildWindow 是一个 silverlight 类 (msdn.microsoft.com/en-us/library/dd538541(v=vs.95).aspx) - 不是标准的 winforms。
  • 哦...不幸的是,我对 Silverlight 不是很熟悉,但是“关闭”事件不是您要找的吗?
  • 不完全......在这两种情况下(标准的winforms表格和提到的silverlight类)我认为你想要'关闭'而不是关闭。 'Closing' 在 'Closed' 之前引发,并允许您在窗口关闭之前取消(使用 eventhandler 参数)。这就是OP想要做的。 Closed 只是通知您一个窗口已关闭,此时您无法对其执行任何操作。
  • 我想他想在子窗口关闭时取消当前在编辑表单中所做的更改。不取消关闭本身?为你点赞。
  • @Evelie- 不是根据对原始帖子的回复,OP 说这正是他想要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-25
  • 2012-12-15
相关资源
最近更新 更多