我创建了一个可重用的用户控件,并实现了拖放方法。 (基本上只有拖动)。我在FlowLayoutPanel中动态创建这些用户控件的列表,我想从FlowLayoutPanel容器外部的其中一个控件中拖出一些东西。
我该怎么做?我可以拖动但是当我将鼠标移动到我实现拖动的对象(mousedownEvent和DragEnter事件)之外时,光标变为拒绝光标并且它不起作用。我试图在FlowLayoutPanel之外设计一个标签并实现DragDrop事件,但它不起作用。
这是用户控件上的代码:
public void projectLabel_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.Text))
e.Effect = DragDropEffects.Copy;
else
e.Effect = DragDropEffects.None;
}
public void projectLabel_MouseDown(object sender, MouseEventArgs e)
{
projectLabel.DoDragDrop(projectLabel.Text, DragDropEffects.Copy | DragDropEffects.Move);
}
这是主要形式:
public void label2_DragDrop(object sender, DragEventArgs e)
{
MessageBox.Show(e.Data.GetData(DataFormats.Text).ToString());
}
这就是我填写控件列表的方式:
private void SchedulerMain_Load(object sender, EventArgs e)
{
// Populate the availableProjectList
Scheduler.common.ProjectContainer projectContainer = new Scheduler.common.ProjectContainer();
projectContainer.AllowDrop = true;
projectContainer.projectName = "TEST";
projectContainer.currentCounter = "1";
projectContainer.BackColor = Color.FromArgb(255, 255, 128);
availableProjectList.Controls.Add(projectContainer);
Scheduler.common.ProjectContainer projectContainer2 = new Scheduler.common.ProjectContainer();
projectContainer2.AllowDrop = true;
projectContainer2.projectName = "TEST 2";
projectContainer2.currentCounter = "1";
projectContainer2.BackColor = Color.FromArgb(128, 128, 255);
availableProjectList.Controls.Add(projectContainer2);
}
在所有对象上将AllowDrag设置为true
我的问题是:如何将对象从容器内的动态创建对象拖动到容器外的另一个对象,但是在同一表单上?
谢谢你们