2011-08-29 79 views
0

我想從自定義工具箱中放置一些控件到WebBrowser組件上。由於此組件不支持拖放操作,因此我使用包裝來捕獲DragEnter,DragOver,...此方法工作正常,但應用程序仍被配置爲在.NET Framework 2.0中工作。在WebBrowser組件上放置項目時出現問題

由於某些原因,我不得不升級到.Net框架4.0。所有使用我的包裝的拖放功能都被破壞了。任何事件都不會觸發。像「導航」事件仍然工作正常...

我已經尋找可能的答案,並嘗試了幾件事,但我無法修復它。有人有任何線索嗎?目前我正在考慮實施包裝:Codeproject

感謝您的時間!

EDIT 1(& 2): 我繼續搜索答案,發現了以下的東西:

  1. 爲dragenter事件應該因爲右邊的圖標顯示在瀏覽器上的某個地方被解僱。此圖標似乎只在DragDropEffect設置正確時出現。但我找不到DragEnter事件(或其他)的處理程序。

  2. 我試圖把想要的物品放到另一個屏幕部件上。屏幕的這部分不包含很多組件,因此在那裏實施拖放操作非常容易。它工作得很好。我能夠從eventArgs中獲取對象。但它仍然不能在web瀏覽器組件上工作。

也許這些線索可以幫助你理清這個問題。

+0

我通過在另一個方向工作得到了一切。可以在HTML代碼中指定一些事件,例如「dragenter」,「dragleave」,「dragmove」和「drop」。我將這些事件添加到了我的頁面的「body」標記中。使用腳本對象(爲WebBrowser指定)可以處理從JavaScript發送的事件... –

回答

0

我實際上工作的第一種方式是通過添加一些事件並在JavaScript代碼中有處理程序。我給自己定的事件有:

  • ondragenter
  • ondragover
  • ondragleave
  • ondrop(NOT ondragdrop !!!)

通過處理JavaScript中這些事件和發送事件到C#代碼我可以處理這些事件的想法。

爲了達到控制我拖動我實施了一個「剪貼板」。通過這個靜態類,我可以保存我拖動的控件,並從「onDragEnter」代碼中訪問它。