0

http://wpfmdi.codeplex.com/ライブラリを使用して、WPF アプリケーションで MDI を処理しています。

子コンテナーを含む Canvas を取得しました。この子コンテナーには、多数の小さなウィンドウが含まれています。小さなウィンドウの1つが閉じられたときにアクションを実行したいので、次のことを試みました:

MdiChild child = new MdiChild();
child.Closing += new RoutedEventHandler(DatabaseTableWindow_Closing); 

private void DatabaseTableWindow_Closing(object sender, RoutedEventArgs e)
        {
            object s = e.Source;
        }

ウィンドウが閉じられたときにメソッドが正常に入力されている間は、e.Sourcenull です。私もチェックしましたがsender、それもnullです。私が欲しいのは、イベントを発生させたウィンドウを見つける方法だけです。

4

2 に答える 2

2

の場合、使用してsenderいるnullMDIフレームワークの見落とし/バグのように聞こえます。ソースがあるので、それを修正できます。イベントが発生した場所を見つけて、送信者としてClosing追加します。それはあなたがイベントを扱っているときthisへの参照をあなたに与えるはずです。MdiChild

于 2012-10-19T14:37:37.300 に答える
2

この問題を回避するには、おそらく LINQ を使用できます。

child.Closing += (o,e) => { DatabaseTableWindow_Closing(this, e); };

編集:実際には、この場合、「this」ではなく「child」(MdiChildを指す)を使用する必要があります:

MdiChild child = new MdiChild();
child.Closing += (o,e) => { DatabaseTableWindow_Closing(child, e); };
于 2012-10-19T14:45:06.520 に答える