[英]How can I implement drag-and-drop to allow rearranging items in a ListView?
我想在 ListView 中启用对拖放的支持,以便用户可以重新排列项目,类似于他们在 Windows Explorer 中可以做的事情。
具体来说,如何在双击 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);
}
但这些似乎都不起作用。
您需要实现DragEnter事件并设置DragEventArgs的Effect属性。 DragEnter事件是使事物可以放入控件的原因。 之后,释放鼠标按钮时将触发DragDrop事件。
这是一个允许将对象放入ListView的版本:
private void Form1_Load(object sender, EventArgs e)
{
listView1.AllowDrop = true;
listView1.DragDrop += new DragEventHandler(listView1_DragDrop);
listView1.DragEnter += new DragEventHandler(listView1_DragEnter);
}
void listView1_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Copy;
}
void listView1_DragDrop(object sender, DragEventArgs e)
{
listView1.Items.Add(e.Data.ToString());
}
毫无疑问,您的示例代码来自: http : //msdn.microsoft.com/zh-cn/library/system.windows.forms.control.allowdrop(v=vs.71).aspx
回答您的问题:没有用于在 ListView 控件中拖放项目的内置功能。 甚至 MSDN 文档也指示您为各种事件实现自己的代码隐藏以实现此功能(请参阅ListViewInsertionMark Class )
ObjectListView (围绕 .NET WinForms ListView 的开源包装器)无需进一步工作即可提供此功能(加上许多其他不错的功能)。 查看演示的“拖放”选项卡。
(来源: codeproject.com )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.