J'ai créé un contrôle (appelé Table) composé de deux PictureBox et de deux étiquettes. J'essaie de faire glisser et déposer d'un panneau à l'autre, mais cela ne fonctionne pas. Voici mon code:Glisser-déposer sur le contrôle personnalisé C#
void TableExampleMouseDown(object sender, MouseEventArgs e)
{
tableExample.DoDragDrop(tableExample, DragDropEffects.Copy);
}
void Panel2DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Copy;
}
void Panel2DragDrop(object sender, DragEventArgs e)
{
panel2.Controls.Add((Table) e.Data.GetData(e.Data.GetFormats()[0]));
}
Il est évident que je l'ai mis AllowDrop à true dans panel2. Déjà lorsque je clique sur l'objet Table (qui est dans panel1), le curseur de la souris ne change pas. Il semble que l'événement MouseDown ne se déclenche pas ...
Merci!
Ceci est la partie du code constructeur dans lequel je souscris Handlers:
this.tableExample.MouseDown += new System.Windows.Forms.MouseEventHandler(this.TableExampleMouseDown);
this.label2.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Label2MouseDown);
this.panel1.DragDrop += new System.Windows.Forms.DragEventHandler(this.Panel1DragDrop);
this.panel1.DragEnter += new System.Windows.Forms.DragEventHandler(this.Panel1DragEnter);
place pour un (https://msdn.microsoft.com/en-us/library/5557y8b4.aspx) [** ** point d'arrêt] dans 'MouseDown' et voir si elle fait feu ou ne pas. –
J'ai essayé et j'ai vu qu'il ne se déclenche pas ... Au lieu de cela, si je fais la même chose sur un contrôle standard tel qu'un TextBox, ça fonctionne correctement ... – Pietro
Donc, vous ne semblez pas vraiment vous abonner l'événement ... Voir ma réponse ci-dessous. –