我创建了一个由两个pictureBoxes和两个标签组成的控件(称为Table)。拖放在自定义控件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]));
}
显然我在是Panel2设置的AllowDrop为true。当我点击Table对象(在panel1中)时,鼠标光标不会改变。它看起来像MouseDown事件不会触发...
谢谢!
这是我订阅的处理程序构造函数代码的一部分:
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);
所以放置[** **断点(https://msdn.microsoft.com/en-us/library/5557y8b4.aspx)在'MouseDown',看看它是否会被触发或不。 –
我试过了,我看到它不会触发...相反,如果我在标准控件(如TextBox)上执行相同的操作,则它正确工作... – Pietro
因此,您似乎并未订阅事件...请参阅下面的答案。 –