2017-03-28 2 views
1

패널간에 레이블을 드래그해야합니다. 그러나 초기 패널에서도 레이블을 삭제하려 할 때 사라집니다. 다음은 내가 사용하는 메소드 코드입니다.드래그 앤 드롭 Windows Forms : 드래그 후 컨트롤 사라짐

private void label1_MouseDown(object sender, MouseEventArgs e) 
{ 
    if (e.Button == MouseButtons.Left) 
    DoDragDrop(sender, DragDropEffects.All); 
} 


private void panel_DragEnter(object sender, DragEventArgs e) 
{ 
    e.Effect = DragDropEffects.All; 
} 


private void panel_DragDrop(object sender, DragEventArgs e) 
{ 
    Label src = e.Data.GetData(typeof(Label)) as Label; 
    src.Location = PointToClient(new Point(e.X, e.Y)); 
} 

AllowDrop이 패널에서 사용 가능합니다. 왜 라벨이 사라지고 어떻게 해결할 수 있습니까?

답변

1

레이블은 여전히 ​​양식에 포함되어 있으므로이 패널은 뒤에 있습니다.

하나 ...

(1) 전면에 레이블을 가져 :

private void panel1_DragDrop(object sender, DragEventArgs e) 
    { 
     Label src = e.Data.GetData(typeof(Label)) as Label; 
     src.Location = this.PointToClient(new Point(e.X, e.Y)); 
     src.BringToFront(); 
    } 

또는

(2) 패널 레이블이 포함되어 있는지 확인하고,에 좌표를 조정 패널의 고객 센터 시스템 :

private void panel1_DragDrop(object sender, DragEventArgs e) 
    { 
     Panel pnl = sender as Panel; 
     Label src = e.Data.GetData(typeof(Label)) as Label; 
     src.Location = pnl.PointToClient(new Point(e.X, e.Y)); 
     pnl.Controls.Add(src); 
    } 
+0

첫 번째 방법은 효과가 없었지만 두 번째는 효과가있었습니다. 고마워요! – Anastasia