代码之家  ›  专栏  ›  技术社区  ›  camino

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

  •  0
  • camino  · 技术社区  · 7 年前

    我想在将项目拖到里面时突出显示悬停的项目 ListBox

    我发现了一个相关的问题 here ,但当按下鼠标时, MouseMove MouseLeave 事件停止工作。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Reza Aghaei    7 年前

    当鼠标被另一个控件捕获时,鼠标事件就像 MouseMove 对于放置目标控件不提升。

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

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

    如果鼠标在拖动过程中输入/移动/离开事件对您很重要,请使用拖动事件 DragEnter , DragOver DragLeave 事件。

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

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