在列表框内拖动项目时如何突出显示“悬停”项目

时间:2019-02-10 03:01:41

标签: c# winforms drag-and-drop listbox

ListBox内拖动项目时,我想突出显示悬停的项目

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

1 个答案:

答案 0 :(得分:1)

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

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

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

如果在拖动期间鼠标进入/移动/离开事件对您很重要,请使用拖动事件DragEnterDragOverDragLeave事件。

例如,要在鼠标悬停在目标列表框上时获取鼠标指针下方项目的索引,可以处理DragOver

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