2011-09-14 3 views
0

나는 팝업 창을 열었고 원하는 것은 자식 창이나 다른 창 위에 팝업 창을 열고 다시 창을 사용하지 않도록 설정하는 것입니다. 그래서 누군가가 돌아가서 메인 윈도우를 닫을 수 없게됩니다.childwindow와 동일한 창을 여는 방법과 닫을 때 부모 창을 사용 하시겠습니까?

나는 창문을 가장 많이 올려 놓았지만 여전히 주 창문을 닫을 수 있었다. 당신이 자식 창을 표시 할 때

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

그 dint는 동일한 창이 다시 열리기 때문에 작동합니다. 그래서 그 문제는 내가 방법과 컨텍스트를 추적 할 수 없습니다. –

+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

dint는 같은 클래스의 객체 때문에 내 컨텍스트를 엉망으로 만듭니다. –

+0

더 많은 문제를 이해할 수 있도록 더 많은 코드를 표시해야합니다 ... – mservidio

+0

표시된 메서드는 Window 만 열고 Method는 동일한 클래스 BrowserWindow 안에 있습니다. 그래서 같은 클래스의 다른 인스턴스를 만들고 위의 코드에서와 같은 창을 표시하면 어떻게 이전 창을 비활성화하고 닫을 때 활성화 할 수 있습니까? –

관련 문제