列表视图不允许我使用当前代码拖放 [英] List View Doesn't Allow Me To Drag and Drop With Current Code

查看:73
本文介绍了列表视图不允许我使用当前代码拖放的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嘿,我只是想知道为什么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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆