我有两个相同的控件(树视图),但有不同的数据有以下问题。如果我从一个拖到另一个,它会崩溃。我想要做的是防止从一个控件拖动到另一个控件但仍允许在控件本身内拖动。
我尝试将Allow Drop设置为false,但这意味着我将无法拖动&放入控件内。
你们有什么想法吗?
答案 0 :(得分:0)
放弃目标事件是你的朋友: -
https://msdn.microsoft.com/en-us/library/ms742859(v=vs.100).aspx
DragOver事件就是你想要的,这是一个冒泡事件,所以你可以在两个TreeView控件的某个祖先上放置一个处理程序,并查看发送者值以确定当前拖动的哪个TreeView以及它是否在不正确的TreeView只是将DragEventsArg中的Effect属性设置为None(这意味着放置目标不接受数据): -
https://msdn.microsoft.com/en-us/library/system.windows.drageventargs.effects(v=vs.100).aspx
见下文;你需要添加逻辑来决定是否应该将Effect设置为None或其他一个枚举值,但是应该得到这个想法。
private void Treeview_DragOver(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.None;
}