Ho 5 pannelli in un modulo e due pulsanti in due pannelli diversi, ora è necessario spostare i pulsanti da un pannello all'altro.Come trascinare e rilasciare un pulsante da un pannello a un altro pannello?
Si prega di suggerire un codice.
Ho 5 pannelli in un modulo e due pulsanti in due pannelli diversi, ora è necessario spostare i pulsanti da un pannello all'altro.Come trascinare e rilasciare un pulsante da un pannello a un altro pannello?
Si prega di suggerire un codice.
per la dimostrazione, inserire due pannelli su una forma e un bottone in uno dei pannelli:
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;
}
Questo approccio funziona anche per le caselle di gruppo, ma gli eventi MouseEnter, MouseLeave e MouseUp deve essere aggiunto manualmente :
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
// ...
}