【发布时间】:2010-11-01 22:07:10
【问题描述】:
我正在尝试创建一个名为 DragDropListView 的独立 Winforms 控件。它派生自 ListView。
我的代码允许用户通过将项目拖放到新位置来对控件内的列表项进行排序。我通过覆盖 OnDragDrop、OnDragOver、OnDragEnter、OnItemDrag 实现了这一点。
我遇到的问题是从一个列表视图拖动到一个完全不同的列表视图。该事件按预期在另一个列表视图上触发,但该方法不采用“发送者”参数,因此没有很好的方法来判断项目是从哪里拖动的,我也无法弄清楚实际抓取被拖动的项目。当前代码适用于“this.SelectedItems”之类的内容,但我希望它是“sender.SelectedItems”。
我猜没有 sender 参数的原因是控件不应该负责了解其环境的太多信息,并且宿主 Form 应该处理两个控件之间的交互,但我正在尝试构建 self包含具有此功能的控件,因此让它渗入表单是行不通的。
想法?
【问题讨论】: