重写列表视图上的 OnDoubleClick() 事件
本文关键字:事件 OnDoubleClick 列表 视图 重写 | 更新日期: 2023-09-27 18:34:54
我有一个从ListView继承的MyListView
类,并且正在覆盖OnDragDrop()
(以及实现拖放的其他必要事件(。当我将其中两个MyListview
放在表单上时,我可以将一个项目从其中一个拖放到另一个。这部分有效。
现在我想覆盖该类的OnDoubleClick()
,这样,如果我将其中两个MyListViews
放在窗体上并双击其中一个,该项目将从该类中删除并添加到另一个表单中。但是我无法弄清楚如何做到这一点。你能给我一些想法吗?谢谢。
不知道您是否以特定方式管理项目的转换,但您可以
-
或在处理后双击查找"选定项"并对其执行操作
-
或者你可以使用 ListViewHitTestInfo 类添加如下代码:
private override OnDoubleClick(...) { ListViewHitTestInfo hit = this.HitTest(e.Location); if (hit.Item != null) { ListViewItem doubleClickedItem = hit.Item; } }
通过以下方式将逻辑放入主机窗体中:
- 处理双击第一个列表视图
- 从第一个列表视图中删除
- 添加到第二个列表视图
除非您以许多不同的形式执行此操作 - 否则不值得将其复杂化。
编辑:如果合理,集中化可以像添加一个做同样事情的方法(伪代码(一样简单
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 );
}
这是你标题的答案
protected override void OnDoubleClick(EventArgs e)
{
base.OnDoubleClick(e);
}
这是您问题的答案
对从列表视图继承的类使用 DoubleClick 事件这只是链接到您的另一个非常相似的问题。