我正在开展一个我想要的项目"拖动"从列表视图到面板的数据。目标是人们可以在列表视图中选择信息,然后在其他面板上的某种流程图上将带有该信息的面板放在上面。
几乎所有的代码都已经有效,但我还有一件事情仍然存在。当我在列表视图上执行鼠标按下时,正在生成一个面板,其上有几个标签可以拖动。以下代码是可读性的简化版本。
private void createPlayerPanel()
{
var coordinates = this.PointToClient(Cursor.Position);
// CREATE THE PANEL
Panel panPlayer = new Panel();
// SETUP THE PANEL
panPlayer.Name = "panPlayer1";
panPlayer.Width = 200;
panPlayer.Height = 50;
panPlayer.BackColor = Color.Gainsboro;
panPlayer.Click += new EventHandler(this.panClick);
panPlayer.MouseDown += new MouseEventHandler(panMouseDown);
// ADD THE PANEL TO THE FORM
this.Controls.Add(panPlayer);
// BRING THE PANEL TO THE FRONT OF THE FORM
panPlayer.BringToFront();
panPlayer.Location = new Point(coordinates.X - 14, coordinates.Y - 12);
}
public bool Dragging = false;
Point location;
Panel panSelected;
private void panMouseDown(object sender, MouseEventArgs e)
{
panSelected = (Panel)sender;
Dragging = true;
location = e.Location;
}
然而,使用相同的鼠标向下我想将面板拖动到流程图中。因此,在一个平滑的移动中,单击列表视图中的信息并将其拖到第二个面板。
当我生成面板时,我还包括一个Mouse Down mouseeventhandler但当我执行mousedown时它还没有激活。因此,当我释放鼠标然后再次按住鼠标时,它工作正常,我可以将面板拖到它的新位置。但我想在一个动作中做到这一点。所以MOUSE DOWN&gt;生成面板&gt; <激活小鼠事件> DRAG PANEL
有没有办法在我完成创建时激活面板的mousedown事件?