Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何让windows窗体控件捕获拖动enter而不是嵌入WPF画布_C#_.net_Wpf_Vb.net_Winforms - Fatal编程技术网

C# 如何让windows窗体控件捕获拖动enter而不是嵌入WPF画布

C# 如何让windows窗体控件捕获拖动enter而不是嵌入WPF画布,c#,.net,wpf,vb.net,winforms,C#,.net,Wpf,Vb.net,Winforms,这是一个非常基本的设置。我有一个System.Windows.Forms面板,其中包含一个ElementHost控件,该控件包含一个System.Windows.Controls画布。用户开始拖动操作并从Canvas控件触发drag enter事件,但我真正想要的是让Canvas忽略drag enter,并让保存Canvas的父System.Windows.Forms.Panel捕获事件。我怎样才能做到这一点呢?简单的答案是,你不能做到这一点。如果将Win32、WPF或DirectX技术混合在一

这是一个非常基本的设置。我有一个System.Windows.Forms面板,其中包含一个ElementHost控件,该控件包含一个System.Windows.Controls画布。用户开始拖动操作并从Canvas控件触发drag enter事件,但我真正想要的是让Canvas忽略drag enter,并让保存Canvas的父System.Windows.Forms.Panel捕获事件。我怎样才能做到这一点呢?

简单的答案是,你不能做到这一点。如果将Win32、WPF或DirectX技术混合在一起,那么上面的一种技术优先,对其他技术来说是一个黑洞。您正在经历的限制称为空域,如果您四处搜索,您会发现许多讨论空域限制和混合WPF/Winforms/DirectX内容的文章。请参阅以下连结:

可能有一些方法有助于为您试图实现的目标提供解决方案。例如,在WPF中处理输入,然后以其他方式显式地将其传递回您的程序。一些快速的谷歌搜索显示:


这是一个简单的挂起,D+D只能在鼠标光标可以看到放置目标时工作。不是,您的面板由ElementHost覆盖。而它又被画布所覆盖,这就是它的D+D事件被隐藏的原因。不完全覆盖小组将是一种解决办法。