我有一个带DragDrop函数的ListView.我希望拖动的项目在DragDrop之后保持选中状态.
我有这个代码(对于DragDrop)
private void commandListView_DragDrop(object sender, DragEventArgs e)
{
Point point = commandListView.PointToClient(new Point(e.X, e.Y));
int index = 0;
try
{
index = commandListView.GetItemAt(point.X, point.Y).Index;
}
catch (Exception)
{
}
if (index < 0)
{
index = commandListView.Items.Count - 1;
}
ListViewItem data = e.Data.GetData(typeof(ListViewItem)) as ListViewItem;
commandListView.Items.Remove(data);
commandListView.Items.Insert(index, data);
}
我试图用这个来再次选择项目,但它不起作用
data.Selected = true;
data.Focused = true;
然后我测试了我是否可以专注于ListView中的第一项
commandListView.Items[0].Selected = true;
commandListView.Items[0].Focused = true;
但它也没有用,选定的项目不会改变.它始终是拖动项目在拖放之前的旧索引.
PS.我正在使用WinForms
@Update
我已经尝试过了
commandListView.Focus();
但它没有奏效
只是为了澄清在同一个ListView中发生的拖拽,我拖动项目来改变他们的顺序.
最佳答案 我找到了解决方案;我正在使用MouseDown事件来启动DragDrop操作.
现在我使用ItemDrag事件,一切正常,实际上我甚至不需要关注项目,它是自动完成的.