2009-04-20 3 views
3

2 개의 flowlayoutpanels에서 사용자 정의 usercontrol의 드래그 앤 드롭 기능을 추가하는 방법은 무엇입니까?하나의 flowlayoutpanel에서 다른 사용자 컨트롤로 드래그

UserControl을 당신이 그 드래그 내부에 저장되어있는 데이터를 추출하는 것입니다 무엇을하고 있는지에

private void flowLayoutPanel1_DragDrop(object sender, DragEventArgs e) 
    { 
     UserControl userControl = e.Data.GetData(typeof(UserControl)) as UserControl; 

답변

3

문제 아래 코드의 다음 줄에 널 (null) 인 유지, 당신은 정확한을 지정해야 유형.

control.DoDragDrop(new Label(), DragDropEffects.Move); 

e.Data.GetDataPresent(typeof(Control)) // = false 
e.Data.GetDataPresent(typeof(Label)) // = true 

당신이해야 할 일은 래퍼를 만들고 드래그 앤 드롭 코드로 사용하는 것입니다.

class ControlWrapper 
{ 
    public Control Control { get; private set; } 
    public ControlWrapper(Control control) { Control = control; } 
} 

control.DoDragDrop(new ControlWrapper(new Label()), DragDropEffects.Move); 

e.Data.GetDataPresent(typeof(ControlWrapper)) // = true 

그리고 코드는 이제

ControlWrapper controlWrapper = e.Data.GetData(typeof(ControlWrapper)) as ControlWrapper; 
UserControl userControl = controlWrapper.Control as UserControl; 

그리고 너무 설교 소리를하지 않으려 고 노력을하게되지만 데이터가 먼저 원하는 형태로 존재 여부를 확인해야합니다. e.Data.GetDataPresent(typeof(ControlWrapper))이 그 형식인지 알려줍니다.

+0

+1 (EXACT 유형), 감사합니다. – wruckie

관련 문제