【问题标题】:how to highlight the "hovered" item when dragging the item inside listbox如何在列表框中拖动项目时突出显示“悬停”项目
【发布时间】:2019-07-03 21:48:14
【问题描述】:

我想在ListBox中拖动项目时突出显示悬停的项目

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

【问题讨论】:

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


    【解决方案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));
    }
    

    【讨论】:

    • 感谢礼萨!我将您的功能与 Invalidate 和 drawitem 一起使用。效果很好!
    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    • 2010-10-12
    相关资源
    最近更新 更多