如何打开与childwindow相同的窗口并在关闭时启用父窗口?

时间:2011-09-14 18:35:21

标签: c# .net wpf visual-studio-2010

我有一个窗口打开一个弹出窗口,我想要的是打开弹出窗口作为子窗口或窗口在另一个上面并禁用后窗口?所以有人不能回去关闭主窗口。

我尝试将窗口放在最顶层,但我仍然可以关闭主窗口。

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;            
}

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

显示子窗口时,使用。将其显示为模态窗口 Form.ShowDialog Method。那么就不需要禁用父窗口,因为子窗口显示为模态窗口会使得父窗口在模态窗口关闭之前无法访问。

BrowserWindow window = new BrowserWindow();
window.ShowDialog();

如果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;
}