我想在ListView中启用对拖放的支持,这样用户就可以重新排列项目,类似于他们在Windows资源管理器中可以做的事情。
具体来说,当我双击ListView时,如何启用Drag事件处理程序?
这是我双击ListView后得到的结果:
private void listView1(object sender, EventArgs e)
但是,我希望它是:
private void listView(object sender, DragEventArgs e)
我该怎么做呢?
我试过很多方法,比如:
private void Form_Load(object sender, EventArgs e)
{
// Enable drag and drop for this form
// (this can also be applied to any controls)
this.AllowDrop = true;
// Add event handlers for the drag & drop functionality
this.DragEnter += new DragEventHandler(Form_DragEnter);
this.DragDrop += new DragEventHandler(Form_DragDrop);
}
但这些似乎都不起作用。
3条答案
按热度按时间zzlelutf1#
您需要实现DragEnter事件并设置DragEventArgs的Effect属性。DragEnter事件允许将内容拖放到控件中。之后,释放鼠标按钮时将激发DragDrop事件。
下面是一个允许将对象拖放到ListView中的版本:
毫无疑问,您的示例代码取自:http://msdn.microsoft.com/en-us/library/system.windows.forms.control.allowdrop(v=vs.71).aspx
lyr7nygr2#
回答您的问题:ListView控件中没有内置的拖放项功能。甚至MSDN文档也指示您为各种事件实现自己的代码隐藏,以便实现此功能(请参阅ListViewInsertionMark Class)
0pizxfdo3#
ObjectListView(一个围绕.NET WinForms ListView的开源 Package 器)提供了这种功能,而无需进一步的工作(加上许多其他nice features)。
(来源:codeproject.com)