4
私はDragDrop機能を持つListViewを持っています。 DragDropの後に、ドラッグしたアイテムを選択したままにしておきたい。DragDropイベント中にListView内のフォーカスされたアイテムを変更する方法は?
私は
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;
仕事doesntの私リストビューの最初の項目にフォーカスすることができます
commandListView.Items[0].Selected = true;
commandListView.Items[0].Focused = true;
ハンゲドラッグされたアイテムがドラッグドロップの前にあった古いインデックスです。
PS。私はWinFormsの
@Update
を使用しています私はすでに
commandListView.Focus();
を使用しようとしましたが、それはただのDragDropが同じListViewコントロールの内部で何が起こっている明確にする
を働いていたdidntの、私アイテムをドラッグして順序を変更しています。
サイドノート: 'catch(Exception){} '(スローされたすべての例外を無視する)は決して使用しないでください。 –
私はおそらくこれがあなたを助けることができます:http://stackoverflow.com/questions/11745028/set-item-focus-in-listview-wpf – Snelfie
'commandListView.Focus();'フォーカス項目の後にコントロール自体をフォーカスする必要があります。 –