如何获取WindowsFormsHost的父控件?

时间:2017-12-06 04:48:49

标签: c# wpf winforms

在我的应用程序中,在WindowsFormsHost中添加我的控件(WF)并在Window(WPF)中添加此主机。

//authors[contains(text(),' C List, RE Goodin ')]

查询: 现在我需要得到" testWindow"的Handle值。来自" grid" (在WF项目中不是WPF)来捕获testWindow的图像。

我已经尝试了#34; grid.Parent作为WinFormsAdapter",但它是内部类。我找到了以下文章,但它们都在WPF项目中显示。

https://social.msdn.microsoft.com/Forums/vstudio/en-US/469f21db-c9cb-4e9c-a29a-b90722032cd1/how-to-find-the-winform-controls-parent-windowsformshost?forum=wpf

请有人建议我如何实现这个目标吗?

谢谢,

1 个答案:

答案 0 :(得分:1)

尝试此操作以从WindowsFormsHost获取grid。完成后,您可以尝试前往WindowsFormsHost的父级。

Control parent = grid.Parent;
Reflection.Assembly adapterAssembly = GetType(WindowsFormsHost).Assembly;
Type adapterType = adapterAssembly.GetType("System.Windows.Forms.Integration.WinFormsAdapter");
object adapterParent = adapterType.InvokeMember("_host", BindingFlags.NonPublic |BindingFlags.GetField | BindingFlags.Instance, null, adapter, new object[] {});
WindowsFormsHost winHost = adapterParent as WindowsFormsHost;

请注意上面的代码未经过测试,但它可以帮助您,并希望指导您实现最终目标。