我正在尝试在我的应用程序中实现拖放。我需要能够抓取UserControl
(在我的情况下为PipelineTask
),我以编程方式添加到FlowLayoutPanel
(其中它位于TabPage
内)。
我将PipelineTask
添加到FlowLayoutPanels
的方法:
private void fillPipeline()
{
flowLayoutPanel1.Controls.Clear();
flowLayoutPanelNonIssues.Controls.Clear();
foreach (FullTask task in pipelineTasks)
{
PipelineTask ts = new PipelineTask(task);
ts.MouseDown += ts_MouseDown;
if (task.TaskType == "Driver Issue")
{
flowLayoutPanel1.Controls.Add(ts);
}
else
{
flowLayoutPanelNonIssues.Controls.Add(ts);
}
}
}
MouseDown
方法:
private void ts_MouseDown(object sender, MouseEventArgs e)
{
PipelineTask ts = sender as PipelineTask;
ts.DoDragDrop(ts, DragDropEffects.Move);
}
但MouseDown
事件根本没有发射。
我的UserControl
上有一个Panel
,填满整个UserControl
,我猜这可能就是问题所在。
有没有人可以帮我这个?如果我对上面的解决方案如何处理这个问题并抓住UserControl
反而会做得很好。
感谢
修改
我暂时通过删除填满UserControl的面板来解决问题。显然这就是问题所在。但是,无需移除面板即可解决此问题。
答案 0 :(得分:1)
您可以订阅Panel的MouseDown并引发您在UserControl上创建的自定义事件,该事件又由ts_MouseDown处理......