2011-09-14 121 views
0

我有一個打開彈出式窗口的窗口,我想要的是打開彈出窗口作爲另一個窗口或窗口,並禁用後窗?所以有人不能回去關閉主窗口。如何打開與子窗口相同的窗口,何時關閉啓用父窗口?

我試着把窗口放在最上面,但仍然能夠關閉主窗口。

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

將其他窗口的IsEnabled屬性設置爲false。您需要使用彈出窗口的關閉事件重新啓用它們。 –

+0

因爲它重新開放的同一個窗口而工作。所以這就是我無法跟蹤方法和上下文的問題。 –

+1

你在什麼時候顯示你的表單?你使用WinForms或WPF?你在問題標籤中標記了兩個。 – mservidio

回答

1

是否設置子窗口的所有者幫助?

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

這工作謝謝!它關閉了主窗口上的子窗口,這對我來說沒關係。 –

0

當顯示子窗口,其顯示爲模式窗口,使用 Form.ShowDialog Method。因此,不需要禁用父窗口,因爲子窗口顯示爲模態窗口會使父窗口在模態窗口關閉之前無法訪問。

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

如果由於某種原因,模態不適合您,請嘗試類似這樣的事情。我不確定你爲什麼不能使用模態,需要多瞭解你的需求。

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

由於同一個班級的對象,這個功能或者使我的上下文搞亂了。 –

+0

你需要顯示更多的代碼,以便我們更好地理解你的問題... – mservidio

+0

我已經展示的方法只是打開窗口,而方法在同一個類BrowserWindow內。因此,如果我製作同一個類的另一個實例並顯示與上面代碼中相同的窗口,那麼如何禁用上一個窗口並在其關閉時啓用它? –