2009-11-03 5 views
1

트리 뷰에서 트리리스트를 목록 상자로 이동하는 데 문제가 있습니다. 코드는 꽤 간단합니다. 나는 이유를 알 수 없다. 내가 가진treenode를 C에서 목록 상자로 이동할 수 없습니다.

윈도우 폼의 생성자에서 : 다음

this.ScriptTestTreeView.ItemDrag += new ItemDragEventHandler(ScriptTestTreeView_ItemDrag); 

this.ActiveScriptListBox.DragEnter += new DragEventHandler(ActiveScriptListBox_DragEnter); 

과 핸들러 함수 : 여기 내 코드입니다

private void ScriptTestTreeView_ItemDrag(object sender, ItemDragEventArgs e) 
{ 
    //MessageBox.Show("drag occur."); 
    ScriptTestTreeView.DoDragDrop(e.Item, DragDropEffects.Link); 
} 

void ActiveScriptListBox_DragEnter(object sender, DragEventArgs e) 
{ 
    //throw new NotImplementedException(); 
    MessageBox.Show("drag enter!"+e.Data.GetData(DataFormats.StringFormat)); 
} 

내가 눈치를 그 내가 트 리뷰에서 노드를 드래그하려고 할 때, treeview의 allowdrop을 true로 설정 했음에도 불구하고 금지 기호가 나타났습니다.

마우스를 목록 상자로 옮기면 메시지 상자가 나타나지만 전체 프로그램이 멈 춥니 다.

이 문제를 디버그 할 수있는 방법이 있습니까? 내가 여기서 뭔가 잘못 했니?

감사합니다.

답변

1

대략적으로 말해서 프로그램 상자가 멈추는 이유는 메시지 상자와 끌어서 놓기 하위 시스템이 마우스를 놓고 싸우고 있기 때문입니다. 메시지 상자가 표시되거나 해제 될 때 프로그램이 정지되는지 여부는 알 수 없지만 끌어 놓기 하위 시스템이 마우스를 캡처하여 메시지 상자 단추를 누르지 못하게하는 것이 문제라고 생각합니다. 또는 메시지 상자가 캡처를 손상 시켰고 이제는 끝낼 수없는 루프를 실행하려고 드래그 드롭 시스템이 남아 있습니다.

해결 방법은 MessageBox.Show를 Trace.WriteLine으로 변경하는 것입니다. 이렇게하면 마우스 조작을 방해하지 않고 원하는 진단 결과를 얻을 수 있습니다.

2

a prohibit sign showed up eventhough I set the allowdrop of treeview to true
ListBox의 AllowDroptrue으로 설정 했습니까?

'정지 중'은 아마도 메시지 프롬프트 때문일 수 있습니다.

업데이트 :
이 트 리뷰와 목록 상자에 대한 좋은 예제 코드입니다 :
Drag and Drop Using C#

관련 문제