我正在使用http://wpfmdi.codeplex.com/库来处理我的WPF应用程序中的MDI。
我有一个包含子容器的Canvas,后者又包含许多小窗口。我希望在其中一个小窗口关闭时执行操作,所以我尝试执行以下操作:
MdiChild child = new MdiChild();
child.Closing += new RoutedEventHandler(DatabaseTableWindow_Closing);
private void DatabaseTableWindow_Closing(object sender, RoutedEventArgs e)
{
object s = e.Source;
}
在窗口关闭时成功输入方法时,e.Source
为空。我也检查了sender
,这也是空的。我想要的是找出触发事件的窗口的方法。
答案 0 :(得分:2)
如果sender
是null
,那么这听起来像是您正在使用的MDI框架中的疏忽/错误。由于您拥有源,因此您可以修复它:找到引发Closing
事件的位置,并添加this
作为发件人。在您处理事件时,这应该为您提供MdiChild
的参考。
答案 1 :(得分:2)
您可以使用LINQ来解决问题:
child.Closing += (o,e) => { DatabaseTableWindow_Closing(this, e); };
修改:实际上,在这种情况下,你不应该使用"这个",但是" child" (这将指向你的MdiChild):
MdiChild child = new MdiChild();
child.Closing += (o,e) => { DatabaseTableWindow_Closing(child, e); };