c#防止拖动框在另一个上面

时间:2014-01-17 03:58:03

标签: c# drag-and-drop

我正在使用visual studio。在我的程序中,我可以选择让用户激活他们想要的某些小部件。每个小部件都是UserControl,因此当他们单击以显示小部件时,它正在激活相应的用户控件。一旦他们激活了控件,他们就可以将框拖动到任何他们想要的位置,以便他们可以自定义屏幕的外观。但是,无论何时将一个窗口小部件拖到另一个窗口小部件上,它只是将它们叠加在一起,这不是我想要的。如果我拖动一个盒子并且它接触另一个盒子,我希望它停止并且不能重叠它。我怎样才能做到这一点?我怀疑它与“DragOver”事件有关,但不确定。

1 个答案:

答案 0 :(得分:0)

在这些情况下将引发DragOver事件: [+]如果用户离开窗口,则会引发DragLeave事件。 [+]如果鼠标进入另一个控件,则会引发该控件的DragEnter。 [+]如果鼠标移动但保持在同一控件内,则会引发DragOver事件。

如果这是您想要的事件,请尝试在UserControl_DragOver上终止窗口小部件(用户控件)。

您可以像这样终止您的UserControl:

private void Btn_Cancel_Click(object sender, EventArgs e)
    {
        this.Parent.Controls.Remove(this);       
    }

(如果你的意思是其他,请在评论中说明)