0

これは私が現在行っている方法ですが、ランタイムが O(n) であるため、効率が悪いかどうかはわかりません。

foreach (Window window in Application.Current.Windows)
{
    if (window.GetType() == typeof(TransactionsWindow))
    {
        this.Owner = window;
    }
}

それを一定にする方法、または私がやっていることよりも効果的な方法はありますか? 基本的には、自分のやり方が正しいかどうかを確認しようとしています。常に改善しようとしています。ウィンドウはボタンイベントによって開かれるので、開いているすべてのウィンドウを検索してハードコーディングするのではなく、イベントが呼び出されたウィンドウを見つけてそのウィンドウを所有者として割り当てる方法があるかどうか疑問に思っています所有者タイプ。

4

2 に答える 2

2

これで問題ありません。ここで O(N) が問題になる十分な数のウィンドウを開いている場合、実際の問題はこのループよりもはるかに大きくなります。

とはいえ、 のbreak;中に a を入れたほうがよいでしょうiftheTransactionsWindow.Show()また、ウィンドウも設定するためのより良いアーキテクチャになるでしょうtheTransactionsWindow.Owner = this

于 2013-12-03T22:06:22.250 に答える