列表视图不允许我使用当前代码拖放 [英] List View Doesn't Allow Me To Drag and Drop With Current Code
本文介绍了列表视图不允许我使用当前代码拖放的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
嘿,我只是想知道为什么winforms不喜欢我的代码?
当我试图拖放时,它似乎给了我一个没有诅咒的迹象..
private void textureListView_ItemDrag(object sender,ItemDragEventArgs e)
{
itemsToMove =(from object textureListView.SelectedItems中的item选择项).ToList();
numItems = textureListView.Items.Count;
textureListView.DoDragDrop(e.Item,DragDropEffects.None);
}
private void textureListView_DragEnter(object sender,DragEventArgs e)
{
e.Effect = DragDropEffects.None;
/ *
for(int i = 0; i< itemsToMove.Count; i ++)
{
var selectedItem = itemsToMove [i];
int oldIndex = textureListView.Items.IndexOf((ListViewItem)selectedItem);
int newIndex = textureListView.GetItemAt(e.X,e.Y).Index;
textureListView.Items.Remove((ListViewItem)selectedItem);
textureListView.Items.Insert(newIndex,(ListViewItem)selectedItem);
//textureListView.Items[newIndex].Selected = true;
}
* /
}
private void textureListView_DragDrop(object sender,DragEventArgs e)
{
for(int i = 0; i< itemsToMove .Count; i ++)
{
var selectedItem = itemsToMove [i];
int oldIndex = textureListView.Items.IndexOf((ListViewItem)selectedItem);
int newIndex = textureListView.GetItemAt(e.X,e.Y).Index;
textureListView.Items.Remove((ListViewItem)selectedItem);
textureListView.Items.Insert(newIndex,(ListViewItem)selectedItem);
//textureListView.Items[newIndex].Selected = true;
}
}
解决方案
确保"AllowDrop"首先设置为true;
尝试此代码。
// 3.拖放操作时触发完成了。
private void textureListView_DragDrop(object sender,DragEventArgs e)
{
ListView.SelectedListViewItemCollection items = e.Data.GetData(typeof(ListView.SelectedListViewItemCollection))ListView.SelectedListViewItemCollection;
foreach(项目中的ListViewItem项目)
{
((ListView)(发送者))。Items.Add(item.Text);
textureListView.Items.Remove(textureListView.SelectedItems [0]);
}
}
// 2。将项目拖动到ListView控件的区域时触发。
private void textureListView_DragEnter(object sender,DragEventArgs e)
{
if(e.Data.GetDataPresent(typeof(ListView.SelectedListViewItemCollection)))
e.Effect = DragDropEffects.Move;
else
e.Effect = DragDropEffects.None;
}
// 1。当用户在ListView上拖动Item时会触发它。
private void textureListView_ItemDrag(object sender,ItemDragEventArgs e)
{
textureListView.DoDragDrop(textureListView.SelectedItems,DragDropEffects.Move);
}最好的问候,
Bob
hey I was just wondering why winforms doesn't like my code?
it seems to give me a no curser sign when I try to drag and drop..
private void textureListView_ItemDrag(object sender, ItemDragEventArgs e) { itemsToMove = (from object item in textureListView.SelectedItems select item).ToList(); numItems = textureListView.Items.Count; textureListView.DoDragDrop(e.Item, DragDropEffects.None); } private void textureListView_DragEnter(object sender, DragEventArgs e) { e.Effect = DragDropEffects.None; /* for (int i = 0; i < itemsToMove.Count; i++) { var selectedItem = itemsToMove[i]; int oldIndex = textureListView.Items.IndexOf((ListViewItem)selectedItem); int newIndex = textureListView.GetItemAt(e.X, e.Y).Index; textureListView.Items.Remove((ListViewItem)selectedItem); textureListView.Items.Insert(newIndex, (ListViewItem)selectedItem); //textureListView.Items[newIndex].Selected = true; } */ } private void textureListView_DragDrop(object sender, DragEventArgs e) { for (int i = 0; i < itemsToMove.Count; i++) { var selectedItem = itemsToMove[i]; int oldIndex = textureListView.Items.IndexOf((ListViewItem)selectedItem); int newIndex = textureListView.GetItemAt(e.X, e.Y).Index; textureListView.Items.Remove((ListViewItem)selectedItem); textureListView.Items.Insert(newIndex, (ListViewItem)selectedItem); //textureListView.Items[newIndex].Selected = true; } }
解决方案
Hi,
Ensure that "AllowDrop" is set to true first;
Try this code.
//3.Triggered when the drag-and-drop operation is complete. private void textureListView_DragDrop(object sender, DragEventArgs e) { ListView.SelectedListViewItemCollection items = e.Data.GetData(typeof(ListView.SelectedListViewItemCollection)) as ListView.SelectedListViewItemCollection; foreach (ListViewItem item in items) { ((ListView)(sender)).Items.Add(item.Text); textureListView.Items.Remove(textureListView.SelectedItems[0]); } } //2. triggered when the item is dragged to the region of the ListView control. private void textureListView_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(typeof(ListView.SelectedListViewItemCollection))) e.Effect = DragDropEffects.Move; else e.Effect = DragDropEffects.None; } //1. It is triggered when the user is dragging the Item on the ListView. private void textureListView_ItemDrag(object sender, ItemDragEventArgs e) { textureListView.DoDragDrop(textureListView.SelectedItems, DragDropEffects.Move); }Best Regards,
Bob
这篇关于列表视图不允许我使用当前代码拖放的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文