如何在列表框中拖动项目时突出显示 "hovered" 项目
how to highlight the "hovered" item when dragging the item inside listbox
我想在将项目拖入内部时突出显示悬停的项目 ListBox
我找到一个相关问题 here,但是当按下鼠标时,MouseMove
和 MouseLeave
事件停止工作。
当鼠标被另一个控件捕获时,鼠标事件MouseMove
不会为放置目标控件引发。
无论鼠标捕获如何,您都可以使用以下代码找到热点索引:
var index = listBox1.IndexFromPoint(listBox1.PointToClient(Cursor.Position));
如果拖动期间的鼠标 enter/move/leave 事件对您很重要,请使用拖动事件 DragEnter
、DragOver
和 DragLeave
事件。
例如,当鼠标在目标列表框上拖动时,要获取鼠标指针下的项目的索引,您可以处理DragOver
:
private void listBox1_DragOver(object sender, DragEventArgs e)
{
var index = listBox1.IndexFromPoint(listBox1.PointToClient(Cursor.Position));
}
我想在将项目拖入内部时突出显示悬停的项目 ListBox
我找到一个相关问题 here,但是当按下鼠标时,MouseMove
和 MouseLeave
事件停止工作。
当鼠标被另一个控件捕获时,鼠标事件MouseMove
不会为放置目标控件引发。
无论鼠标捕获如何,您都可以使用以下代码找到热点索引:
var index = listBox1.IndexFromPoint(listBox1.PointToClient(Cursor.Position));
如果拖动期间的鼠标 enter/move/leave 事件对您很重要,请使用拖动事件 DragEnter
、DragOver
和 DragLeave
事件。
例如,当鼠标在目标列表框上拖动时,要获取鼠标指针下的项目的索引,您可以处理DragOver
:
private void listBox1_DragOver(object sender, DragEventArgs e)
{
var index = listBox1.IndexFromPoint(listBox1.PointToClient(Cursor.Position));
}