0

我有一个MyListView从 ListView 继承的类,并且正在覆盖OnDragDrop()(以及实现拖放的其他必要事件)。当我将其中两个MyListviews 放在一个表单上时,我可以从其中一个中拖动一个项目并将其拖放到另一个上。这部分有效。

现在我想覆盖OnDoubleClick()该类,这样如果我将其中两个MyListViews放在一个表单上并双击其中一个,则该项目将从该类中删除并添加到另一个中。但我无法理解如何做到这一点。你能给我一些想法吗?谢谢。

4

3 回答 3

1

通过以下方式将逻辑放入您的主机表单中:

  • 处理第一个 ListView 的双击
  • 从第一个 ListView 中删除
  • 添加到第二个 ListView

除非您以多种不同的形式执行此操作——否则不值得将其复杂化。

编辑:如果有道理,集中可以像添加一个做同样事情的方法一样简单(伪代码)

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 );
}
于 2012-05-22T15:51:48.527 回答
1

不知道您是否以特定方式管理项目的选择,但您可以

  • 或在处理后双击查找SelectedItems并对其采取行动

  • 或者您可以使用ListViewHitTestInfo类添加这样的代码:

    private override OnDoubleClick(...)    
    {
    
       ListViewHitTestInfo hit = this.HitTest(e.Location);
       if (hit.Item != null)
       {
          ListViewItem doubleClickedItem = hit.Item; 
       }
    }
    
于 2012-05-22T15:51:52.457 回答
0

这是你标题的答案

protected override void OnDoubleClick(EventArgs e)
{
    base.OnDoubleClick(e);
}

这是您问题的答案

在从 ListView 继承的类上使用 DoubleClick 事件 这只是链接回您的另一个非常相似的问题。

于 2012-05-22T18:18:49.620 回答