C# 如何打开与子窗口相同的窗口,以及在关闭时启用父窗口?

C# 如何打开与子窗口相同的窗口,以及在关闭时启用父窗口?,c#,.net,wpf,visual-studio-2010,C#,.net,Wpf,Visual Studio 2010,我有一个窗口,可以打开一个弹出窗口,我想要的是打开一个弹出窗口作为子窗口或窗口上的另一个窗口,并禁用后窗口?这样就不会有人回去关上主窗口了 private void axWebBrowser1_NewWindow3(object sender, DWebBrowserEvents2_NewWindow2Event e) { BrowserWindow window = new BrowserWindow(); window.axWebBrowser1.RegisterAsBrow

我有一个窗口,可以打开一个弹出窗口,我想要的是打开一个弹出窗口作为子窗口或窗口上的另一个窗口,并禁用后窗口?这样就不会有人回去关上主窗口了

private void axWebBrowser1_NewWindow3(object sender, DWebBrowserEvents2_NewWindow2Event e)
{
    BrowserWindow window = new BrowserWindow();
    window.axWebBrowser1.RegisterAsBrowser = true;
    window.Visibility = Visibility.Visible;
    window.textBox.IsEnabled = false;
    window.Height = 550;
    window.Width = 600;
    e.ppDisp = window.axWebBrowser1.Application;
    window.Topmost = true;            
}
我试着把窗户放在最上面,但我仍然能够关闭主窗户

private void axWebBrowser1_NewWindow3(object sender, DWebBrowserEvents2_NewWindow2Event e)
{
    BrowserWindow window = new BrowserWindow();
    window.axWebBrowser1.RegisterAsBrowser = true;
    window.Visibility = Visibility.Visible;
    window.textBox.IsEnabled = false;
    window.Height = 550;
    window.Width = 600;
    e.ppDisp = window.axWebBrowser1.Application;
    window.Topmost = true;            
}

显示子窗口时,使用 . 因此,无需禁用父窗口,因为子窗口显示为模式窗口将使父窗口在模式窗口关闭之前无法访问

BrowserWindow window = new BrowserWindow();
window.ShowDialog();
如果出于某种原因,modal不适合您,请尝试类似的方法。我不确定您为什么不能使用modal,需要进一步了解您的需求

private void axWebBrowser1_NewWindow3(object sender, DWebBrowserEvents2_NewWindow2Event e)
{
    BrowserWindow window = new BrowserWindow();

    // in your case I think the parent form should be = this.
    Form parentForm = this;    
    window.Tag = parentForm;
    window.FormClosing += new FormClosingEventHandler(this.BrowserWindow_FormClosing);

    parentForm.Enabled = false;
}

private void BrowserWindow_FormClosing(object sender, FormClosingEventArgs e)
{
    Form parentWindow = (sender as Form).Tag;
    parentWindow.Enabled = true;
}

设置子窗口的所有者是否有帮助

private void axWebBrowser1_NewWindow3(object sender, DWebBrowserEvents2_NewWindow2Event e)
{
    BrowserWindow window = new BrowserWindow();
    window.Owner = this;
    ...          
}

将其他窗口的IsEnabled属性设置为false。您需要使用弹出窗口的关闭事件来重新启用它们。该功能无法工作,因为它与再次打开的窗口相同。所以这就是我无法跟踪方法和上下文的问题。你在什么时候展示你的表单?您使用的是WinForms还是WPF?你在问题标签中标记了这两个。这可能会因为同一个类的对象而弄乱我的上下文。我显示的方法只是打开窗口,而该方法位于同一个类BrowserWindow中。因此,如果我创建同一类的另一个实例,并显示与上述代码中相同的窗口,我如何禁用上一个窗口并在其关闭时启用它?我不确定我是否完全理解为什么modal不适用于您。如果我没有看错,那么在创建BrowserWindow的新实例时,也可以尝试处理Form.Closing事件。您可以在实例化父窗口时将其设置为它的标记,然后在响应关闭时,通过从标记中获取实例来再次启用父窗口。这就像如果我确实设置了IsEnabled属性,我仍然可以返回父窗体并关闭它。我不明白您的意思。请提供更多的代码,如果可能的话,这样我们可以看到整个问题。这工作感谢!!它关闭了主窗口上的子窗口,这对我来说没关系。。