2011-09-14 11 views
0

私はポップアップを開くウィンドウを持って、私が望むのは、ポップアップを別のウィンドウの上に子ウィンドウまたはウィンドウとして開き、バックウィンドウを無効にしますか?誰かが戻ってメインウィンドウを閉じることはできません。childwindowと同じウィンドウを開く方法と閉じたときに親ウィンドウを有効にする方法はありますか?

ウィンドウを一番上に置いてみましたが、まだメインウィンドウを閉じることができました。

あなたは子ウィンドウを表示すると、 Form.ShowDialog Methodを使用して、モーダルウィンドウとして表示
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に設定します。ポップアップのClosingイベントを使用して再度有効にする必要があります。 –

+0

これは同じウィンドウが再び開いているために機能しません。だから私は方法と文脈を追跡することができない問題です。 –

+1

どの時点でフォームを表示していますか? WinFormsまたはWPFを使用していますか?あなたは両方の質問タグにタグを付けました。 – mservidio

答えて

1

子ウィンドウのオーナーを設定することは役に立ちますか?

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

それは感謝しました!それは私のために大丈夫メインウィンドウ上の子ウィンドウを閉じます.. –

0

。モーダルウィンドウとして表示されている子ウィンドウは、モーダルウィンドウが閉じられるまで親ウィンドウにアクセスできなくなるため、親ウィンドウを無効にする必要はありません。

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

dintは、同じクラスのオブジェクトのために自分のコンテキストを乱してしまいます。 –

+0

問題の詳細を理解できるように、コードをもっと表示する必要があります。 – mservidio

+0

私が示したメソッドは、ウィンドウを開くだけであり、メソッドは同じクラスのBrowserWindow内にあります。だから私は同じクラスの別のインスタンスを作成し、上のコードで同じウィンドウを表示する場合、私は以前のウィンドウを無効にすることができますし、その閉じたときに有効にする? –

関連する問題