复制项目从一个列表框到另一个双击.双击事件未触发.Winform c#

本文关键字:双击 事件 另一个 Winform 项目 列表 一个 复制 | 更新日期: 2023-09-27 18:15:41

我是Winform开发新手,我有两个列表框。当用户双击第一个列表框中的一个项目时,我希望将其复制到第二个列表框中。问题是我的双击方法永远不会被解雇。下面是我的代码:

//here I register the event
this.fieldsArea.MouseDoubleClick += new MouseEventHandler(fieldsArea_MouseDoubleClick);
下面是双击方法:
    private void fieldsArea_MouseDoubleClick(object sender, MouseEventArgs e)
    {
        MessageBox.Show("from method");
        int index = fieldsArea.IndexFromPoint(e.Location);
        string s = fieldsArea.Items[index].ToString();
        selectedFieldsArea.Items.Add(s);
    }

所以我想从fieldsArea的元素被复制到selectedFieldsArea…消息框从未显示,在调试中,我看到我从未输入此方法…我遗漏了什么吗?

ps:我已经实现了拖放效果很好。

UPDATE:问题来自正在实现的MouseDown事件。这是我的mousedown事件。

private void fieldsArea_MouseDown(object sender, MouseEventArgs e)
    {
        if (fieldsArea.Items.Count == 0)
            return;
        int index = fieldsArea.IndexFromPoint(e.Location);
        string s = fieldsArea.Items[index].ToString();
        DragDropEffects dde1 = DoDragDrop(s,
            DragDropEffects.All);
    }

复制项目从一个列表框到另一个双击.双击事件未触发.Winform c#

ps:我已经实现了拖放效果很好。

这意味着您可能已经注册了一个干扰MouseDoubleclickMouseDown事件。

只是为了测试目的,尝试删除拖放实现(取消注册MouseDown事件),然后MouseDoubleclick应该工作。

请确保您没有注册其他鼠标事件,如MouseClick MouseDown事件,这可能会干扰MouseDoubleclick事件。

:

MouseDown事件处理程序中添加以下代码,您可以先检查它是否为双击。

if(e.Clicks>1)
{
   int index = fieldsArea.IndexFromPoint(e.Location);
   string s = fieldsArea.Items[index].ToString();
   selectedFieldsArea.Items.Add(s); 
}

这是你的新处理器:

private void fieldsArea_MouseDown(object sender, MouseEventArgs e)
{
  if (fieldsArea.Items.Count == 0)
            return;
  int index = fieldsArea.IndexFromPoint(e.Location);
  string s = fieldsArea.Items[index].ToString();
  if(e.Clicks>1)
  {          
       selectedFieldsArea.Items.Add(s); 
  }
  else
  {
        DragDropEffects dde1 = DoDragDrop(s,
        DragDropEffects.All);
  }
}

我相信你可能有"MouseClick/MouseDown"事件或"SelectedIndexChanged"事件,这些事件抵制得到火的"MouseDoubleclick"事件,所以你需要妥善处理它们。由于