我是开发Wpf的初学者我需要知道如何在.exe
控件中的新TabItem
中运行TabControl
应用程序。
我做了这个片段:
private void MenuItem_Click_6(object sender, RoutedEventArgs e) {
TabItem nPage = new TabItem();
nPage.Header = "nouveau";
TabPage.Items.Add(nPage);
ProcessStartInfo pInfo = new ProcessStartInfo("Multi-langue.exe");
pInfo.WorkingDirectory = @"C:\Multi-langue\Multi-langue\bin\Debug";
Process p = Process.Start(pInfo);
}
新应用程序正在运行,但不在新TabItem
内。
那么如何修改我的代码片段以集成在第一个应用程序中启动的第二个应用程序的显示?
答案 0 :(得分:6)
我找到了这个解决方案并且工作正常
public IntPtr MainWindowHandle { get; set; }
[DllImport("user32.dll", SetLastError = true)]
private static extern long SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
和
private void MenuItem_Click_6(object sender, RoutedEventArgs e) {
TabItem nPage = new TabItem();
WindowsFormsHost host = new WindowsFormsHost();
System.Windows.Forms.Panel p = new System.Windows.Forms.Panel();
host.Child = p;
nPage.Header = "nouveau";
nPage.Content = host;
TabPage.Items.Add(nPage);
Process proc = Process.Start(
new ProcessStartInfo()
{
FileName = @"C:\Multi-langue\Multi-langue\bin\Debug\Multi-langue.exe",
WindowStyle = ProcessWindowStyle.Normal
});
Thread.Sleep(1000);
SetParent(proc.MainWindowHandle, p.Handle);
}