首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获得WindowsFormsHost的父控件?

如何获得WindowsFormsHost的父控件?
EN

Stack Overflow用户
提问于 2017-12-06 04:48:48
回答 1查看 841关注 0票数 0

在我的应用程序中,在WindowsFormsHost中添加我的控件(WF),并在窗口中添加这个主机(WPF)。

代码语言:javascript
复制
WindowsFormsHost host = new WindowsFormsHost();
host.Child = grid; //this is instance of WF control
testwindow.testSurface.Children.Add(host); // add in Window(WPF)

查询:现在需要从“网格”( WF项目而不是WPF)获取" testWindow“的句柄值来捕获testWindow的图像。

我试过"grid.Parent as 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

请有人建议我如何做到这一点吗?

谢谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-06 05:10:41

试着从WindowsFormsHost中获取grid。一旦你有了它,你可以试着用你自己的方式来获得WindowsFormsHost的父级。

代码语言:javascript
复制
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;

请注意,上面的代码是没有测试的,但它是为了帮助和希望引导您达到最终目标。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47666970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档