2011-08-19 2 views
3

내 프로그램의 두 인스턴스간에 끌어서 놓기를 시도하고 있지만 데이터를 내 형식으로 캐스팅하려고하면 Invalid를 throw합니다. 캐스트 예외. 여기 e.Data.GetData WinForms 끌어서 놓기 문제 캐스팅

코드입니다 :

protected virtual void GetDropIEntities(DragEventArgs e) 
    { 

     foreach (string s in e.Data.GetFormats()) 
      Console.WriteLine(s); 

     Entity[] myDroppedEnts = (Entity[])e.Data.GetData(e.Data.GetFormats()[0]); 

    } 

별난 일이 Console.WriteLine 쓰기 내가 예외를 캐스팅해야 할 때 "엔티티는 []"출력에 있지만, 발생된다는 것이다. 누군가가 나에게 이걸 줄 수 있니? 미리 Thx!

+1

DLL 지옥 모퉁이 항상. fuslogvw.exe를 사용하여 어셈블리 확인 문제를 해결하십시오. –

+0

Hello Hans, 답장을 보내 주시길 바랍니다. 그러나 fuslogvw.exe가 문제를 식별하는 데 어떻게 도움이 될지 이해할 수 없습니다. 누락 된 어셈블리를 감지하는 데이 도구를 사용하지 않습니까? – zezespecial

+0

또한 모든 바인딩을 기록하도록 선택했을 때로드 된 어셈블리의 출처를 보여줍니다. –

답변

1

응용 프로그램의 한 인스턴스에서 다른 인스턴스로 객체를 끌어다 놓으려면 객체가 이어야하며이어야합니다. 그렇지 않으면 캐스팅이 예상대로 작동하지 않습니다.

이 작업을 수행하려면 [Serializable] 특성을 Entity 클래스에 추가하고, 선택적으로 ISerializable 인터페이스를 구현할 수 있습니다. Serializable 클래스를 만드는 방법에 대한 소개는 다음을 참조하십시오. http://msdn.microsoft.com/en-us/library/4abbf6k0(v=VS.90).aspx

이것은 클립 보드 사용과 동일한 문제입니다. 좋은 예는이 CodeProject의 사이트에서 볼 수있다 :이 작업을 수행 할 때

http://www.codeproject.com/KB/cs/copycustomclasstoclipbrd.aspx