WPF 启动一个新的 Winform Cefsharp

WPF starting a new Winform Cefsharp

我一直在 WPF 中工作,并试图从那个领域开始一个 Winform。唯一的解决办法是将其打开为 ShowDialog()。这是一个错误还是我们可以预期将来会出现任何问题? 我的其他程序位于同一个解决方案中,但不在同一个命名空间中。

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

我刚刚测试了这个,它对我有用:

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

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

我认为您的问题很可能是由于您在尝试对其调用 Showprogram2 立即超出范围,这比您看到它的速度更快。 ShowDialog 起作用的原因是因为它是一个阻塞调用,将 window 保持在范围内并在它关闭之前一直打开。

尝试将 program2 声明为 WPF Window class 中的 字段 ,而不是局部变量。这将使它保持在范围内。

我发现了问题... program2.Show() 无法正常工作的原因是 Cefsharp 在通过 javascript 加载进度条启动第二个程序期间(Javascript)没有完成加载。您可以通过将 Cefsharp 标记为

来识别这些问题
 if (browser.CanExecuteJavascriptInMainFrame)
                    {
                        WindowsFormsApplication1.Form1 program2 = new WindowsFormsApplication1.Form1();
                        program2.Show();
                    }