2013-05-16 68 views
5

我創建了一個WPF和WinForm應用程序,我需要做的是 從WPF應用程序打開WinForm。兩者都在相同的解決方案,但他們是不同的項目。從WPF應用程序打開WinForm?

我試過如下:

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一個例外: 昏暗conexion作爲新的SqlConnection(ConfigurationManager.ConnectionStrings(「CONN」)的ConnectionString) 對象引用不設置到對象的實例 這是一個實例變量。 問候! –

+0

這只是意味着你的代碼中的東西是空的或什麼都不是。這可能是因爲你錯過了一些init代碼來建立你的連接字符串等。我的示例代碼沒有創建一個新的進程,所以你的WinForm應用程序永遠不會啓動。如果你想開始一個新的過程,你嘗試@Jeremy Thompson的評論'Process.Start(「Winform.exe」);' – terry

+0

我剛剛得到它的工作,但現在我有這個問題: 當新的WinForm呈現,控件看起來像一個Win98應用程序,一箇舊的外觀和感覺。問候! Im on W7 –

相關問題