如何在列表框中拖动项目时突出显示 "hovered" 项目

how to highlight the "hovered" item when dragging the item inside listbox

我想在将项目拖入内部时突出显示悬停的项目 ListBox

我找到一个相关问题 here,但是当按下鼠标时,MouseMoveMouseLeave 事件停止工作。

当鼠标被另一个控件捕获时,鼠标事件MouseMove不会为放置目标控件引发。

无论鼠标捕获如何,您都可以使用以下代码找到热点索引:

var index = listBox1.IndexFromPoint(listBox1.PointToClient(Cursor.Position));

如果拖动期间的鼠标 enter/move/leave 事件对您很重要,请使用拖动事件 DragEnterDragOverDragLeave 事件。

例如,当鼠标在目标列表框上拖动时,要获取鼠标指针下的项目的索引,您可以处理DragOver

private void listBox1_DragOver(object sender, DragEventArgs e)
{
    var index = listBox1.IndexFromPoint(listBox1.PointToClient(Cursor.Position));
}