2012-01-27 62 views
1

中的WinForms,我有.Handle财产,我如何在WPF得到相当于?如何查找。RichTextBox的句柄?

我试过使用WindowInteropHelper但它不支持RichTextBox,只有Window类型。 在此先感谢。

+0

即使在的WinForms,这个属性是给你的窗口句柄 - > HTTP:/ /msdn.microsoft.com/en-us/library/system.windows.forms.control.handle.aspx(“获取窗口句柄控件绑定到。”) – 2012-01-27 13:02:35

+1

这是WPF靓芯,控制不视窗。只需油漆,使*看起来像一个窗口。还有一大堆代码,使它们像窗口一样。因此没有Handle属性。 – 2012-01-27 14:17:16

回答

3

控件没有关联WinAPI的手柄,像WinForms的控制做的。 WPF只使用一个WinAPI窗口处理来自操作系统的窗口消息,并将其封装在Window类实例中。你可以做的最好的方法是浏览你的控件的父母,直到找到一个窗口并获得句柄。据我了解,这可能与WindowInteropHeler返回的句柄相同。

UPD。 为了使该解答更有用和乱box'y这里是一些代码(但不测试):

IntPtr hwnd = new WindowInteropHelper(Window.GetWindow(userControlRefernce)).Handle; 
+0

我不敢相信!但如果我需要从'Win32API'调用一个函数......不能吗?目前,我试图在WPF中做到这一点:http://stackoverflow.com/questions/332788/maintain-scroll-position-of-treeview但在我的情况下,我想同步:http://stackoverflow.com/问题/ 9028524 /何灿I-同步,二,滚动条 – Jack 2012-01-27 13:52:28

2

RichTextBox没有HWND手柄WPF。如果您真的需要这个句柄,您仍然可以使用WinForms库中的RichTextBox使用WindowsFormsIntegration程序集。

请记住,您可以随时检查哪些元素具有或不具有使用Spy++实用的手柄。在WPF

+0

哦,不。我不能使用的WinForms RichTextBox的的,主要的原因在这个项目中使用WPF,是RichTextBox中的资源在WPF是的WinForms RichTextBox的的都没有。 (我正在写一个带有高亮的简单文本编辑器)。感谢您关于spy ++使用的提示。下一次,我会使用它。 – Jack 2012-01-27 14:01:33