2012-07-10 8 views
9

मेरे पास एक फॉर्म में 5 पैनल हैं और दो बटन दो अलग-अलग पैनलों में हैं, अब आवश्यकता है कि बटन को एक पैनल से दूसरे पैनल में ले जाएं।एक पैनल से दूसरे पैनल में बटन खींचने और छोड़ने के लिए कैसे?

कृपया मुझे एक कोड सुझाएं।

उत्तर

21

प्रदर्शन के लिए, एक फार्म पर दो पैनलों और पैनल में से एक में एक बटन रखते हैं:

public Form1() { 
    InitializeComponent(); 

    panel1.AllowDrop = true; 
    panel2.AllowDrop = true; 

    panel1.DragEnter += panel_DragEnter; 
    panel2.DragEnter += panel_DragEnter; 

    panel1.DragDrop += panel_DragDrop; 
    panel2.DragDrop += panel_DragDrop; 

    button1.MouseDown += button1_MouseDown; 
} 

void button1_MouseDown(object sender, MouseEventArgs e) { 
    button1.DoDragDrop(button1, DragDropEffects.Move); 
} 

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

void panel_DragDrop(object sender, DragEventArgs e) { 
    ((Button)e.Data.GetData(typeof(Button))).Parent = (Panel)sender; 
} 
0

यह दृष्टिकोण भी समूह बक्से के लिए काम करता है, लेकिन mouseenter, mouseleave, और MouseUp घटनाओं मैन्युअल रूप से जोड़ा जाना चाहिए :

public frmMain () { 
    InitializeComponent (); 

    pbxMoveIt.BringToFront (); 
    gbx1.AllowDrop = true; 
    gbx2.AllowDrop = true; 
    lblStatus.Text = "GUI Status: Started"; 
    gbx1.MouseEnter += gbx_MouseEnter; 
    gbx1.MouseLeave += gbx_MouseLeave; 
    gbx1.MouseUp += gbx_MouseUp; 
    gbx2.MouseEnter += gbx_MouseEnter; 
    gbx2.MouseLeave += gbx_MouseLeave; 
    gbx2.MouseUp += gbx_MouseUp; 
} 

private void gbx_MouseEnter (object sender, EventArgs e) { 
    // useful code 
    // ... 
} 
private void gbx_MouseLeave (object sender, EventArgs e) { 
    // useful code 
    // ... 
} 
private void gbx_MouseUp (object sender, EventArgs e) { 
    // useful code 
    // ... 
} 
संबंधित मुद्दे