Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用户控件允许删除_C#_Winforms_User Controls_Drag And Drop_Sharpdevelop - Fatal编程技术网

C# 用户控件允许删除

C# 用户控件允许删除,c#,winforms,user-controls,drag-and-drop,sharpdevelop,C#,Winforms,User Controls,Drag And Drop,Sharpdevelop,我有一个UserControl,它看起来像WPF的XAML编辑器。我想把treenodes拖进去做点什么。拖动系统正在为treeview部件工作。但我似乎无法使drop部分在自定义控件中工作。(该控件是使用sharpdevelop库构建的) 我将自定义控件的AllowDrop属性设置为True。我将此添加到我的控件中: this.DragDrop += new System.Windows.Forms.DragEventHandler(this.XmlEditControl_DragDrop)

我有一个
UserControl
,它看起来像
WPF的XAML
编辑器。我想把treenodes拖进去做点什么。拖动系统正在为treeview部件工作。但我似乎无法使drop部分在自定义控件中工作。(该控件是使用
sharpdevelop
库构建的)

我将自定义控件的
AllowDrop
属性设置为
True
。我将此添加到我的控件中:

this.DragDrop += new System.Windows.Forms.DragEventHandler(this.XmlEditControl_DragDrop)

private void XmlEditControl_DragDrop(object sender, DragEventArgs e)
{
    MessageBox.Show("I dropped");
}

但我从来没见过留言盒。我是否遗漏了一些明显的内容?

当首先触发
DragEnter
事件以完成拖放操作时,您需要更改
DragEventArgs
DragDropEffects
。因此,
DragDrop
事件将触发

示例

this.DragEnter += new System.Windows.Forms.DragEventHandler(this.XmlEditControl_DragEnter);
this.DragDrop += new System.Windows.Forms.DragEventHandler(this.XmlEditControl_DragDrop);

private void XmlEditControl_DragEnter(object sender, DragEventArgs e)
{
    e.Effect = DragDropEffects.All;
}
private void XmlEditControl_DragDrop(object sender, DragEventArgs e)
{
    MessageBox.Show("I dropped");
}
谢谢,

我希望这对您有所帮助:)

不起作用。我仍然看到“不能在此处放置”标志,因此我根本不允许在控件中放置,效果也不会触发,我的消息框也不会触发。:(@PhaDaPhunk不确定问题出在哪里。您是否确保其他事件正确触发?如果是,请尝试在
DragOver
事件下显示
MessageBox
)做同样的事情。天哪,这太烦人了,因为它应该会起作用。0_o@PhaDaPhunk其他事件是否正常触发,当然包括
Load
?您的控件可能有问题,是否确实将
AllowDrop
设置为
True
?您是否尝试创建另一个用户控件并检查DragDrop是否正在启动?我找到了答案。我必须去XmlEditor停靠的父级。我必须键入xmlEditor.TextArea.ActiveArea.Drag……,而不是只键入this.Drag。。。。。。。。哎哟,但现在它起作用了,谢谢。如果你想把这个写进你的答案,我会接受的