我有一个MyListView
从 ListView 继承的类,并且正在覆盖OnDragDrop()
(以及实现拖放的其他必要事件)。当我将其中两个MyListview
s 放在一个表单上时,我可以从其中一个中拖动一个项目并将其拖放到另一个上。这部分有效。
现在我想覆盖OnDoubleClick()
该类,这样如果我将其中两个MyListViews
放在一个表单上并双击其中一个,则该项目将从该类中删除并添加到另一个中。但我无法理解如何做到这一点。你能给我一些想法吗?谢谢。
通过以下方式将逻辑放入您的主机表单中:
除非您以多种不同的形式执行此操作——否则不值得将其复杂化。
编辑:如果有道理,集中可以像添加一个做同样事情的方法一样简单(伪代码)
public void MyForm_OnListViewDoubleClick(object sender, EventArgs e)
{
MoveListItem(firstListView, secondListView);
}
// ...
public static void MoveListItem(ListView source, ListView destination)
{
var listItem = source.SelectedItem;
source.Remove( listItem );
destination.Add( listItem );
}
不知道您是否以特定方式管理项目的选择,但您可以
或在处理后双击查找SelectedItems并对其采取行动
或者您可以使用ListViewHitTestInfo类添加这样的代码:
private override OnDoubleClick(...)
{
ListViewHitTestInfo hit = this.HitTest(e.Location);
if (hit.Item != null)
{
ListViewItem doubleClickedItem = hit.Item;
}
}
这是你标题的答案
protected override void OnDoubleClick(EventArgs e)
{
base.OnDoubleClick(e);
}
这是您问题的答案
在从 ListView 继承的类上使用 DoubleClick 事件 这只是链接回您的另一个非常相似的问题。