2009-11-14 2 views
3

사용자가 레이블을 끌어서 텍스트 상자에 놓을 수있는 양식을 작성하려고합니다. 텍스트 상자에 AllowDrop을 찾을 수 있지만 레이블에 "AllowDrag"와 같은 속성이 없습니다. 또한, 모든 드래그 & 레이블 (DragEnter, DragLeave 등)에 대한 이벤트를 삭제하기위한 메소드를 만들었지 만 그 중 아무 것도 작동하지 않는 것 같습니다. 드래그하는 방법을 알아낼 수 없습니다. 어떻게 처리합니까?C#에서 레이블 끌기는 어떻게 처리합니까?

 private void label1_Click(object sender, EventArgs e) 
    { 

     // This one works 
     status.Text = "Click"; 
    } 

     private void label1_DragOver(object sender, DragEventArgs e) 
    { 

     // this and the others do not 
     status.Text = "DragOver"; 
    } 

    private void label1_GiveFeedback(object sender, GiveFeedbackEventArgs e) 
    { 
     status.Text = "GiveFeedback"; 
    } 

    private void label1_DragDrop(object sender, DragEventArgs e) 
    { 
     status.Text = "DragDrop"; 
    } 

    private void label1_DragEnter(object sender, DragEventArgs e) 
    { 
     status.Text = "DragEnter"; 
    } 

    private void label1_DragLeave(object sender, EventArgs e) 
    { 
     status.Text = "DragLeave"; 
    } 

    private void label1_QueryContinueDrag(object sender, QueryContinueDragEventArgs e) 
    { 
     status.Text = "QueryContinueDrag"; 
    } 
+0

를하지만, 경우에 그것은 분명히 오류가 발생하는 것이 설명해주십시오하지 않습니다 레이블이 TextBox 위에 있고 마우스를 올리면 (즉, 놓기) 최고, – BillW

답변

16

DoDragDrop() 메서드를 사용하여 D + D를 적극적으로 시작하는 AllowDrag 속성은 없습니다. 그리고 이벤트 핸들러는 소스가 아닌 D + D 대상에 있어야합니다. 샘플 양식, 그것은 레이블 및 텍스트 상자 필요 : 나는 '에서 답이 nobugz 아래 당신이 필요로하는 무엇을 제공합니다 생각

public partial class Form1 : Form { 
    public Form1() { 
     InitializeComponent(); 
     label1.MouseDown += new MouseEventHandler(label1_MouseDown); 
     textBox1.AllowDrop = true; 
     textBox1.DragEnter += new DragEventHandler(textBox1_DragEnter); 
     textBox1.DragDrop += new DragEventHandler(textBox1_DragDrop); 
    } 

    void label1_MouseDown(object sender, MouseEventArgs e) { 
     DoDragDrop(label1.Text, DragDropEffects.Copy); 
    } 
    void textBox1_DragEnter(object sender, DragEventArgs e) { 
     if (e.Data.GetDataPresent(DataFormats.Text)) e.Effect = DragDropEffects.Copy; 
    } 
    void textBox1_DragDrop(object sender, DragEventArgs e) { 
     textBox1.Text = (string)e.Data.GetData(DataFormats.Text); 
    } 
    } 
+0

정확히 내가 필요한 것. 고맙습니다. –

2

당신은 버튼을 놓아 때 수동으로 당신이 아래로 누를 때 진실하게 부울 거짓을 유지하여 레이블을 이동해야하고 MouseMove 이벤트에 당신이 때 마우스로 컨트롤을 이동 bool은 사실입니다.

예 : here을 찾을 수 있습니다.

관련 문제