我在WinForms中有一个ComboBox,我将项目从下拉列表拖到图片框上。如果我将项目直接从组合中拖出(向右或向左),则SelectedIndexChanged会触发一次。但是如果我碰巧在光标离开组合之前将其他项目悬停在下拉列表中,则事件会触发两次。 我几乎尝试了所有我能找到的建议都无济于事。而且,是的,SelectedChangeCommitted以相同的方式工作。 对解决方案的任何想法?
答案 0 :(得分:0)
有趣的是如何发布问题可能会有所帮助!我自己找到了一个可用的解决方法,如下所示: 首先,我添加了一个最初设置为0的全局整数。然后,在SelectionChangeCommitted中,我将此递增1,然后确保仅当此值为1时才运行代码。问题在于,无论何处将此变量重置为零(即准备好下一次拖动操作),它执行了两次代码。 解决方案是仅在Combo的MouseClick事件中进行重置,因为这发生在change-event之前。然后,当我尝试开始下一次拖动操作时,它将被重置。
int runonce = 0;
private void cmbTags_MouseClick(object sender, MouseEventArgs e)
{
runonce = 0;
}
private void cmbTags_SelectionChangeCommitted(object sender, EventArgs e)
{
runonce++;
if (runonce == 1)
{
// My cmbTags_SelectionChangeCommitted-code
}
}