0

我正在尝试在我的应用程序中实现拖放。我需要能够获取我以编程方式添加到 a的UserControl(在我的情况下) (它又位于 a 内)。PipelineTaskFlowLayoutPanelTabPage

我将我添加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 的面板暂时解决了这个问题。所以很明显这就是问题所在。但是,无需移除面板即可解决此问题。

4

1 回答 1

1

您可以订阅面板的 MouseDown 并引发您将在 UserControl 上创建的自定义事件,该事件又由 ts_MouseDown 处理...

于 2013-04-21T16:08:06.323 回答