C# 是否可以将项目拖放到列表框中的特定位置?

C# 是否可以将项目拖放到列表框中的特定位置?,c#,winforms,C#,Winforms,我在Windows窗体中有三个列表框。第一个将保持不变。我想将项目从第三个拖放到第二个,以便将其与第一个的特定元素相匹配。例如,第一个列表框有10个元素,第二个是空的,第三个有10个元素。我想将第三个列表框的第二个元素拖到第二个列表框的第五个位置(该位置为空),以便它与第一个列表框的第五个元素匹配。这有道理吗?能做到吗?怎么用?(不要求提供完整的代码,只想知道是否可能,并可能提供一些如何做到这一点的提示) 谢谢 我不知道这是不是最好的方法,但它确实有效。我修改了一个代码,用于通过拖放对列表框进行

我在Windows窗体中有三个列表框。第一个将保持不变。我想将项目从第三个拖放到第二个,以便将其与第一个的特定元素相匹配。例如,第一个列表框有10个元素,第二个是空的,第三个有10个元素。我想将第三个列表框的第二个元素拖到第二个列表框的第五个位置(该位置为空),以便它与第一个列表框的第五个元素匹配。这有道理吗?能做到吗?怎么用?(不要求提供完整的代码,只想知道是否可能,并可能提供一些如何做到这一点的提示)


谢谢

我不知道这是不是最好的方法,但它确实有效。我修改了一个代码,用于通过拖放对列表框进行重新排序

  private void LstBox3_MouseDown(object sender, MouseEventArgs e)
    {

        if (lstBox3.SelectedItem == null) return;
        lstBox2.DoDragDrop(lstBox3.SelectedItem, DragDropEffects.All);
    }





    private void LstBox2_DragDrop(object sender, DragEventArgs e)
    {

        Point point = lstBox2.PointToClient(new Point(e.X, e.Y));
        int index = lstBox2.IndexFromPoint(point);
        if (index < 0) index = lstBox2.Items.Count - 1;            
        object data1 = lstBox3.SelectedItem;
        lstBox2.Items.RemoveAt(index);
        lstBox2.Items.Insert(index, data1);


    }



    private void LstBox2_DragOver(object sender, DragEventArgs e)
    {
        e.Effect = DragDropEffects.All;
    }
private void LstBox3\u MouseDown(对象发送方,MouseEventArgs e)
{
if(lstBox3.SelectedItem==null)返回;
lstBox2.DoDragDrop(lstBox3.SelectedItem,DragDropEffects.All);
}
私有void LstBox2_DragDrop(对象发送方,DragEventArgs e)
{
Point-Point=lstBox2.PointToClient(新点(e.X,e.Y));
int index=lstBox2.IndexFromPoint(点);
如果(索引<0)索引=lstBox2.Items.Count-1;
对象数据1=lstBox3.SelectedItem;
lstBox2.项目移除(索引);
lstBox2.项目.插入(索引,数据1);
}
私有void LstBox2_DragOver(对象发送方,DragEventArgs e)
{
e、 效果=DragDropEffects.All;
}

这毫无意义。如果第二个列表框为空,那么如何将项目拖动到该列表框中的第五个位置?空列表中没有第五个位置。为了获得第五个位置,列表框中必须至少有4个项目,而空列表框是不可能的。好吧。在Windows窗体中是否有其他类似于列表框的工具,我可以在其中执行此操作?据我所知,没有任何工具允许您将某个内容拖动到第5个位置,而之前没有4个项目。我所知的一切都不允许您在列表中创建一个任意位置,该位置之前不包含任何项。可能没有,因为你所问的似乎不合逻辑。唯一的方法是让用户将一个项目拖到第一个位置,然后拖到第二个位置,然后拖到第三个位置,依此类推。让它看起来像空的。将项目放在
中,然后如果它放在那里,则用拖动的值覆盖该值。只是有点忙,谢谢。假设第二个列表框也有10个元素。我能把一件物品放到它的第五个位置并替换它吗?有什么建议吗?