사용자 컨트롤을 한 FlowLayoutPanel에서 다른 FlowLayoutPanel로 드래그합니다
-
12-09-2019 - |
문제
2 FlowLayoutPanels에서 사용자 정의 USERCONTROL의 드래그 앤 드롭 기능을 추가하려면 어떻게해야합니까?
UserControl은 아래의 다음 코드 라인에서 계속 무효화됩니다.
private void flowLayoutPanel1_DragDrop(object sender, DragEventArgs e)
{
UserControl userControl = e.Data.GetData(typeof(UserControl)) as UserControl;
해결책
당신이하는 일의 문제는 드래그 내부에 저장된 데이터를 추출하려면 정확한 유형.
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))
그 형식인지 알려줄 것입니다.
제휴하지 않습니다 StackOverflow