位于FlowLayoutPanel上的自定义UserControl上的MouseDown事件

时间:2013-04-18 12:53:13

标签: c# winforms events user-controls mousedown

我正在尝试在我的应用程序中实现拖放。我需要能够抓取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的面板来解决问题。显然这就是问题所在。但是,无需移除面板即可解决此问题。

1 个答案:

答案 0 :(得分:1)

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