2012-03-06 3 views
0

나는이 모든 곳을 보았고 모든 솔루션을 시도했으며 원하는 것을 얻지 못하고 있습니다. 탐색기에서 ListView로 파일을 드롭 한 다음 끌어서 놓기를 통해 파일을 정렬 할 수 있어야합니다. 탐색기에서 드래그/드롭을 가져 오는이 간단한 코드가 있습니다.탐색기에서 ListView로 끌 수 없음

 this.messageView.AllowDrop = true; 
     this.messageView.Location = new System.Drawing.Point(12, 52); 
     this.messageView.Name = "messageGrid"; 
     this.messageView.Size = new System.Drawing.Size(121, 97); 
     this.messageView.TabIndex = 3; 
     this.messageView.UseCompatibleStateImageBehavior = false; 
     this.messageView.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop); 
     this.messageView.DragEnter += new System.Windows.Forms.DragEventHandler(this.Form1_DragEnter); 

나는 내 양식을 가지고를 RichTextBox에 messageView을 변경, 그것은이 잘 작동하기 때문에 이것은, 기괴한

 private void Form1_DragEnter(object sender, DragEventArgs e) 
     { 

     if (e.Data.GetDataPresent("FileGroupDescriptor")) 
      { 
      e.Effect = DragDropEffects.All; 
      } 
     } 

    private void Form1_DragDrop(object sender, DragEventArgs e) 
     { 
     messageView.Items.Add(e.Data.ToString()); 
     } 

핸들러. 해야 할 추가 단계가 있습니까? ListView에 놓으려고하면 탐색기에서 선을 통해 원이 생깁니다. 어떤 도움을 주시면 감사하겠습니다. 감사.

답변

1

DragEnter 및 DragDrop 이벤트는 Form이 아닌 ListView에서 처리해야합니다. 끌어서 놓기 정보 : 기사 이름은 기억이 나지 않지만 codeproject에서 좋은 예를 발견했습니다.

+0

목록보기에서 처리됩니다. 이름은 약간 펑키합니다. InitializeComponent()가 아닌 다른 곳에서 초기화해야합니까? –

+2

"FileGroupDescriptor"를 상수 DataFormats.FileDrop로 변경하고, 오른쪽 문자열을 FileDrop로 지정하고 DragDrop 이벤트에서 올바른 데이터 (문자열 []]를 가져 와서 반복 할 수 있습니다.) ToString() 대신 e.Data.GetData() 메서드를 사용합니다. –

관련 문제