2011-08-29 2 views
0

자체 정의 된 도구 상자에서 WebBrowser 구성 요소로 일부 컨트롤을 떨어 뜨리고 싶습니다. 이 구성 요소는 끌어서 놓기를 지원하지 않기 때문에 DragEnter, DragOver 등의 래퍼를 사용합니다 ...이 메서드는 응용 프로그램이 .NET Framework 2.0에서 작동하도록 구성되어있는 동안 잘 작동합니다.WebBrowser 구성 요소에서 항목을 놓는 중 문제가 발생했습니다.

몇 가지 이유 때문에 .NET Framework 4.0으로 업그레이드해야했습니다. 내 래퍼의 모든 끌어서 놓기 기능이 손상되었습니다. 어떤 이벤트도 트리거되지 않습니다. "navigated"와 같은 이벤트는 여전히 정상적으로 작동합니다 ...

나는 이미 가능한 대답을 검색하고 몇 가지 시도를했지만 해결할 수 없었습니다. 아무도 단서가 있습니까? 현재 주어진 래퍼 구현에 대해 생각하고있어 : Codeproject

시간 내 주셔서 감사합니다!

EDIT 1 (& 2) : 나는 답을 내 검색을 계속 다음과 같은 물건을 발견 : 우측 아이콘이 브라우저에 표시하기 때문에

  1. 의 dragEnter 이벤트

    어딘가에 해고되어야한다. 이 아이콘은 DragDropEffect가 올바르게 설정된 경우에만 표시됩니다. 그러나 DragEnter 이벤트 (또는 기타)에 대한 처리기를 찾을 수 없습니다.

  2. 원하는 항목을 다른 화면 부분에 놓으려고했습니다. 화면의이 부분에는 많은 구성 요소가 포함되어 있지 않으므로 드롭 액션을 구현하기가 쉽습니다. 그리고 그것은 잘 작동했습니다. 나는 eventArgs에서 객체를 가져올 수있었습니다. 하지만 여전히 웹 브라우저 구성 요소에서 작동하지 않습니다.

이러한 단서는이 문제를 해결하는 데 도움이 될 수 있습니다.

+0

다른 방향으로 작업하여 모두 고정 시켰습니다. "dragenter", "dragleave", "dragmove"및 "drop"과 같은 HTML 코드에서 이벤트를 지정할 수 있습니다. 내 페이지의 "본문"태그에 이러한 이벤트를 추가했습니다. ScriptingObject (WebBrowser에 대해 지정됨)를 사용하면 javascript에서 보낸 이벤트를 처리 할 수 ​​있습니다. –

답변

0

내가 실제로 작동하는 첫 번째 방법은 자바 스크립트 코드 내에 일부 이벤트와 핸들러를 추가하는 것입니다. 내가 설정 한 이벤트는 다음과 같습니다

  • ondragenter
  • 으로 onDragOver
  • ondrop ondragleave (onDragDrop을 NOT!)

자바 스크립트 내에서 이러한 이벤트를 처리하고 이벤트를 전송함으로써 C#으로 - 코드 이러한 이벤트를 원하는대로 처리 할 수 ​​있습니다.

컨트롤을 얻으려면 나는 약간의 "클립 보드"를 구현했습니다. 이 정적 클래스를 사용하여 컨트롤을 드래그하여 "onDragEnter"코드에서 액세스 할 수 있습니다.

관련 문제