【发布时间】:2019-07-03 21:48:14
【问题描述】:
我想在ListBox中拖动项目时突出显示悬停的项目
我找到了一个相关问题here,但是当按下鼠标时,MouseMove 和MouseLeave 事件停止工作。
【问题讨论】:
标签: c# winforms drag-and-drop listbox
我想在ListBox中拖动项目时突出显示悬停的项目
我找到了一个相关问题here,但是当按下鼠标时,MouseMove 和MouseLeave 事件停止工作。
【问题讨论】:
标签: c# winforms drag-and-drop listbox
当鼠标被另一个控件捕获时,像MouseMove 这样的鼠标事件不会为放置目标控件引发。
不管鼠标捕获如何,都可以使用以下代码找到热点索引:
var index = listBox1.IndexFromPoint(listBox1.PointToClient(Cursor.Position));
如果拖动过程中的鼠标进入/移动/离开事件对您很重要,请使用拖动事件DragEnter、DragOver 和DragLeave 事件。
例如,当鼠标在目标列表框上拖动时,获取鼠标指针下项的索引,可以处理DragOver:
private void listBox1_DragOver(object sender, DragEventArgs e)
{
var index = listBox1.IndexFromPoint(listBox1.PointToClient(Cursor.Position));
}
【讨论】: