簡體   English   中英

雙擊將項目從一個列表框復制到另一個列表框。 Doubleclick事件未觸發。 Winform C#

[英]Copy item from one listbox to another on double click. Doubleclick event not fired. Winform C#

我對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:我已經實現了拖放操作,效果很好。

更新 :問題來自正在實現的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);
    }

ps:我已經實現了拖放操作,效果很好。

這意味着您可能已經注冊了一個MouseDown事件,該事件會干擾MouseDoubleclick

僅出於測試目的,請嘗試刪除Drag&Drop實現(取消注冊MouseDown事件),然后MouseDoubleclick應該起作用。

確保您沒有注冊其他的Mouse事件,例如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”事件的發生,因此您需要正確處理它們。 謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM