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