从WPF应用程序打开WinForm?

Emm*_*ana 6 .net wpf winforms

我已经创建了一个WPF和WinForm应用程序,我需要做的是从WPF应用程序打开WinForm.两者都在同一个解决方案中,但它们是不同的项目.

我尝试了以下方法:

Dim newWinForm as New MainWindow
newWinForm.show()
Run Code Online (Sandbox Code Playgroud)

我从这里找到了一个可能的解决方案:以 编程方式从wpf应用程序打开winform

但我不明白我到底要做什么.我希望你能帮助我.谢谢!

ter*_*rry 9

通常,您需要在WindowInteropHelper中托管表单,如下面的WPF窗口中的Button.Click事件处理程序:

C#:

private void button1_Click(object sender, RoutedEventArgs e) {
  Form1 form = new Form1();
  WindowInteropHelper wih = new WindowInteropHelper(this);
  wih.Owner = form.Handle;
  form.ShowDialog();
}
Run Code Online (Sandbox Code Playgroud)

VB:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
    Dim form As New Form1()
    Dim wih As New WindowInteropHelper(Me)
    wih.Owner = Form.Handle
    form.ShowDialog()
End Sub
Run Code Online (Sandbox Code Playgroud)

当然,您需要添加项目的引用/导入和System.Windows.Forms.dll

  • 在创建窗口之前,您需要通过调用`System.Windows.Forms.Application.EnableVisualStyles();``System.Windows.Forms.Application.SetCompatibleTextRenderingDefault(false);`来启用视觉样式。您可以查看 WinForm 项目中的 Program.cs。干杯! (2认同)