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();
}
}
我认为您的问题很可能是由于您在尝试对其调用 Show
后 program2
立即超出范围,这比您看到它的速度更快。 ShowDialog
起作用的原因是因为它是一个阻塞调用,将 window 保持在范围内并在它关闭之前一直打开。
尝试将 program2
声明为 WPF Window
class 中的 字段 ,而不是局部变量。这将使它保持在范围内。
我发现了问题... program2.Show()
无法正常工作的原因是 Cefsharp 在通过 javascript 加载进度条启动第二个程序期间(Javascript)没有完成加载。您可以通过将 Cefsharp 标记为
来识别这些问题
if (browser.CanExecuteJavascriptInMainFrame)
{
WindowsFormsApplication1.Form1 program2 = new WindowsFormsApplication1.Form1();
program2.Show();
}
我一直在 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();
}
}
我认为您的问题很可能是由于您在尝试对其调用 Show
后 program2
立即超出范围,这比您看到它的速度更快。 ShowDialog
起作用的原因是因为它是一个阻塞调用,将 window 保持在范围内并在它关闭之前一直打开。
尝试将 program2
声明为 WPF Window
class 中的 字段 ,而不是局部变量。这将使它保持在范围内。
我发现了问题... program2.Show()
无法正常工作的原因是 Cefsharp 在通过 javascript 加载进度条启动第二个程序期间(Javascript)没有完成加载。您可以通过将 Cefsharp 标记为
if (browser.CanExecuteJavascriptInMainFrame)
{
WindowsFormsApplication1.Form1 program2 = new WindowsFormsApplication1.Form1();
program2.Show();
}