2013-05-16 4 views
5

Я создал приложение WPF и WinForm, мне нужно сделать это , чтобы открыть WinForm из приложения WPF. Оба находятся в одном и том же решении, но это разные проекты.Открыть WinForm из приложения WPF?

Я попытался следующие:

Dim newWinForm as New MainWindow 
newWinForm.show() 

Я нашел возможное решение здесь: Opening winform from wpf application programmatically

Но я не понимаю, что именно я должен делать. Надеюсь, ты поможешь мне. Благодаря!

+0

a 'Process.Start (« Winform.exe »);' может быть альтернативным методом ... –

+0

Да, я тоже это сделал, но WPF-приложение - это форма входа в систему, поэтому я не думаю, что это хороший выбор. Благодаря! –

ответ

6

Как правило, вы должны провести свою форму в 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(); 
} 

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 

И, конечно, вам нужно добавить ссылку/импорт вашего проекта и System.Windows.Forms.dll

+0

Здравствуйте, теперь, когда приложение WinForm начинает его trows исключение в этой строке: Dim Conexion As New SqlConnection (. ConfigurationManager.ConnectionStrings («CONN») ConnectionString) ссылка на объект не указывает на экземпляр объекта Это переменная экземпляра. Поздравления! –

+0

Это просто означает, что что-то в вашем коде равно null или ничего. Это может быть связано с тем, что вы пропустили какой-то код инициализации для создания строки подключения или т. Д. Мой образец кода не создал новый процесс, поэтому ваше приложение WinForm никогда не запускается. Если вы хотите начать новый процесс, попробуйте комментарий @Jeremy Thompson 'Process.Start (« Winform.exe »);' – terry

+0

Я только что получил его, но теперь у меня есть эта проблема: Когда новый WinForm был рендеринг, элементы управления выглядят как приложение Win98, старый внешний вид. Приветствую! Im на W7 –

Смежные вопросы