2017-11-10 1 views
0

WPF에서 작업 중이며 해당 영역에서 Winform을 시작하려고합니다. 유일한 해결책은 ShowDialog()으로 여는 것입니다. 이것은 버그입니까, 아니면 앞으로 어떤 문제가 발생할 수 있습니까? 내 다른 프로그램이 동일한 솔루션에 있지만 동일한 네임 스페이스에 있지 않습니다.새로운 Winform Cefsharp를 시작하는 WPF

WindowsFormsApplication1.Form1 program2 = new WindowsFormsApplication1.Form1(); 
program2.ShowDialog(); 
+1

이 질문과 관련하여 어떤 점이 좋습니까? – crashmstr

+0

'C#'태그가 없으며'c' 태그가 있습니다. 태그는 중요하며 정확해야합니다. 그리고 아니, 나는 닫을 투표하지 않았다. – crashmstr

+0

태그를 확인하십시오. 'c','wpf', 그리고'winforms'. 'c' 태그는 C 프로그래밍 언어 용 태그입니다. 따라서 제 질문은 "C 언어가이 질문과 무슨 상관이 있습니까?"입니다. 이것은 귀하의 질문과 태그를 명확히하려는 시도였습니다. – crashmstr

답변

0

내가 문제를 발견했습니다 ... 이유는 program2.Show() 작동하지 않습니다 자바 스크립트를 통해 두 번째 프로그램의 출시 중에 Cefsharp becouse로드 진행률 표시 줄 (자바 스크립트)로드가 완료되지 않았습니다. Cefsharp를 사용하여 이러한 문제를 식별 할 수 있습니다.

if (browser.CanExecuteJavascriptInMainFrame) 
        { 
         WindowsFormsApplication1.Form1 program2 = new WindowsFormsApplication1.Form1(); 
         program2.Show(); 
        } 
1

난 그냥이 테스트했습니다, 그리고 그것은 나를 위해 작동 :

public partial class MainWindow : Window 
{ 
    private Form winForm; 
    public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    private void ButtonBase_OnClick(object sender, RoutedEventArgs e) 
    { 
     winForm = new WinForm1(); 
     winForm.Show(); 
    } 
} 

enter image description here

나는 당신의 문제가 대부분이라고 생각 인한 후 즉시 범위의 외출하여 program2Show에 전화를 걸어보십시오. 볼 수있는 것보다 빨리 닫습니다. 이유는 ShowDialog이 작동하기 때문입니다. 차단 호출이기 때문에 범위 내에 창을 유지하고 닫은 후에야 열립니다.

program2을 로컬 변수 대신 WPF Window 클래스 내에서 필드로 필드로 선언 해보십시오. 그러면 범위가 유지됩니다.

+0

언급해야하지만 다른 프로그램은 동일한 솔루션에 있지만 동일한 네임 스페이스가 아닙니다. –

+0

아무 것도 영향을 미치지 않습니다. 내 테스트에서 두 창은 모두 같은 프로젝트의 일부였습니다. 이것은 별도의 프로젝트에서 또는 WinForms 윈도우가 참조 된 어셈블리에서 오는 경우에도 작동합니다. –

+0

여기에 Show()를 사용하면 새 프로그램이 멈추거나 충돌합니다.이 프로그램에는 아무 것도 없습니다. 64 비트에서 일하고 ... 둘 다. –

관련 문제