2012-01-27 5 views
1

그래서 흐름 패널과 런타임에 listviews를 추가하는 버튼이 있습니다. 내 더블 클릭 이벤트를 설정했습니다. 클릭 (또는 클릭 및 드래그) 이벤트를 설정하여 흐름 패널의 컨트롤을 재정렬 할 수 있습니까?런타임에 플로우 패널의 컨트롤을 재 배열 할 수 있습니까?

우리는 정렬 전략 (위에서 아래로, 왼쪽 오른쪽)을 바꾸고 감쌀 수 있음을 알고 있습니다. 그러나 조직을 원했던 사용자는 컨트롤을 한 지점에서 드래그하여 다른 곳으로 옮길 수있었습니다.

private void addNewWOButton_Click(object sender, EventArgs e) 
     { 
      ListView newListView = new ListView(); 
      newListView.AllowDrop = true; 
      newListView.DragDrop += listView_DragDrop; 
      newListView.DragEnter += listView_DragEnter; 
      newListView.DoubleClick += listView_DoubleClick; 

      flowPanel.Controls.Add(newListView); 
} 
+1

실제로 "flowpanel"을 'FlowLayoutPanel'컨트롤이라고 부릅니까? –

+1

[흐름 레이아웃 패널 내의 컨트롤 재정렬] 가능한 중복 (http://stackoverflow.com/questions/425867/reordering-of-controls-within-a-flow-layout-panel)? 참조 : http://www.codeproject.com/Articles/48411/Using-the-FlowLayoutPanel-and-Reordering-with-Drag –

답변

2

이렇게하면 컨트롤이 패널의 맨 위로 이동하고 나머지 컨트롤이 아래로 이동합니다.

  FlowLayoutPanel1.Controls.SetChildIndex(myControl, 0); 

드래그 앤 드롭 순서를 변경하려면 각 컨트롤에 드래그 앤 드롭 이벤트를 연결해야합니다. 드롭 이벤트에서 컨트롤을 드래그하고 대상 컨트롤의 인덱스 위치를 가져옵니다. 그런 다음 SetChildIndex를 사용하여 인덱스를 변경하십시오. 아직도이 문제를 해결한다면, 나는 당신에게 보여줄 수있는 코드를 파헤 칠 수있다.