[英]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.