【发布时间】:2011-11-09 15:07:55
【问题描述】:
Winforms 的ListBox 似乎有一个奇怪的行为。当我将SelectionMode 设置为一个时,我希望我可以单击一个项目,它会被选中。这是正确的,但是如果我单击一个项目,上下拖动列表,选择就会改变。
现在,这没什么大不了的,只是我需要在一些控件之间执行拖放操作。因此,当他们选择一个项目并将其拖到列表中时,一个新选择的项目实际上是它注册为拖动的项目,并且错误的项目被发送过来。
因此,我通过在 mousedown 上保存对所选项目的引用来进一步包扎它,但这最终导致用户体验不佳。我的用户将一个项目拖到另一个列表框,这确实有效,但是原始列表框不再选择“正确”的项目,并且他们对实际将哪个项目拖放到第二个控件上感到困惑。
那么,有没有办法改变这种行为呢?我希望在 MouseDown 处选择一个项目,忽略 MouseUp 部分。仅仅消费事件似乎是不够的,我宁愿不必重写 ListBox(我们必须为正在创建的任何新类编写文档)。
【问题讨论】: