2014-02-27 58 views
1

我有一個WPF應用程序與menuItem將調用WinForm表單。我能夠從WPF窗口打開WinForm,但它打開在WPF窗口後面。它不會移動到WPF窗口的前面。我可以很好地與WinForm窗口進行交互。WPF父與WinForm的孩子 - BringToFront()不工作

這裏是我使用啓動的WinForm

void ManualControlInit(object sender, RoutedEventArgs e) { 

    // Set visual styles 
    System.Windows.Forms.Application.EnableVisualStyles(); 
    System.Windows.Forms.Application.SetCompatibleTextRenderingDefault(false); 

    DynamixelCsDemo form = new DynamixelCsDemo(); 
    WindowInteropHelper wih = new WindowInteropHelper(this); 
    wih.Owner = form.Handle; 
    form.Show(); 
    form.BringToFront(); 
} 

我怎樣才能打開的WinForm並將它顯示在WPF窗口頂部的代碼?

回答

3

創建一個實現IWin32Window的類,從其Handle返回WPF窗口的句柄,並將該類傳遞給form.Show()

這將設置窗口所擁有的窗體。

+1

當我通過form.Show(window)傳遞IWin32Window對象時,出現錯誤「最好的重載匹配有一些無效參數」;我需要在WinForm中爲Show()創建一個重寫方法類定義? – Alex

+2

然後你通過了錯誤的對象。 WPF沒有實現'IWin32Window';你需要自己製作一個包裝。 http://msdn.microsoft.com/en-us/library/szcefbbd(v=vs.110).aspx – SLaks

+1

我沒有注意到我的幫手執行情況。 Visual Studio引用System.Windows.Interop中的http://msdn.microsoft.com/en-us/library/system.windows.interop.iwin32window%28v=vs.110%29.aspx。一切都很好。謝謝你的幫助。 – Alex