我有一个其中有一个窗口(例如W1)的应用程序,我希望它在打开时不阻止应用程序的处理。我已经使用W1.show()实现了。从该窗口打开另一个窗口(W2)。

我希望它的行为类似于模式,以便它禁用父窗口W1,但不能禁用其余的应用程序。

简而言之:
W2打开时


应用程序继续运行
只有W1被禁用


我试过了

        W1.IsEnabled = false;
        W2.Show();
        W1.IsEnabled = true;


它在打开时将焦点移至W2,其余应用程序也继续运行,但我仍然可以使用W1,这是不正确的

如果我用

W2.ShowDialog()

那么整个应用程序将被阻止。是否有某种方法可以通过它禁用父窗口(/所有者)?

最佳答案

这应该可以回答您的问题:

private void Button_Click(object sender, RoutedEventArgs e)
{
    W2.Owner = W1;
    W1.IsHitTestVisible = false;
    W2.Closing += W2_Closing;
    W2.Show();
}

private void W2_Closing(object sender, CancelEventArgs e)
{
    W1.IsHitTestVisible = true;
}

07-27 13:23
查看更多