Открыть WinForm из приложения WPF?
Я создал приложение WPF и WinForm, что мне нужно сделать, это откройте WinForm из приложения WPF. Оба находятся в одном решении, но это разные проекты.
я попробовал следующий:
Dim newWinForm as New MainWindow
newWinForm.show()
Я нашел возможное решение здесь: Открытие winform из приложения wpf программно
но я не понимаю, что именно я должен сделать. Надеюсь, вы сможете мне помочь. Спасибо!
2 ответов
Как правило, вам нужно разместить свою форму в WindowInteropHelper, как следовать в кнопке окна WPF.Щелкните обработчик событий:
C#:
private void button1_Click(object sender, RoutedEventArgs e) {
Form1 form = new Form1();
WindowInteropHelper wih = new WindowInteropHelper(this);
wih.Owner = form.Handle;
form.ShowDialog();
}
В. Б.:
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
и, конечно, вам нужно добавить ссылку / импорт вашего проекта и системы.Окна.Формы.dll файлы
невозможно загрузить форму win из приложения WPF. таким образом, вы можете сделать так:
1 - Создайте пользовательский элемент управления в проекте winform и добавьте все элементы формы в пользовательский элемент управления
public partial class myUserControl : UserControl, IDisposable
{
...// All Form Code and element put here
}
2-Создайте окно wpf и поместите в него сетку:
<Grid Name="grid">
</Grid>
3 - на окно WPF код такой :
public partial class myWpfWindow: Window
{
public myWpfWindow()
{
InitializeComponent();
myUserControl = new myUserControl ();
System.Windows.Forms.Integration.WindowsFormsHost winformHost = new
System.Windows.Forms.Integration.WindowsFormsHost();
winformHost.Child = myUserControl;
grid.Children.Add(winformHost); // --> <Grid Name="grid">
}
}
4 - добавить две ссылки на проект:WindowsFormsIntegration, System.Windows.Forms