Перетащите изображение - PullRequest
0 голосов
/ 13 июля 2020

У меня есть listview1 с текстом и listview2 с изображениями. У меня есть форма с контролем слова win, которую я получил от https://www.codeproject.com/articles/3582/word-control-for-net listview1 отбрасывает текст в элементе управления без проблем, используя

private void listView1_ItemDrag(object sender, ItemDragEventArgs e)
    {
        string[] files = GetSelection();
        if (files != null)
        {
            ListViewItem lvi = new ListViewItem();
            lvi = (ListViewItem)listView1.SelectedItems[0].Clone();
            DoDragDrop(new DataObject(DataFormats.Text, lvi.Text), DragDropEffects.Copy);
        }

    }

Вот выбор «Получить», если это имеет значение.

private string[] GetSelection()
    {
        if (listView1.SelectedItems.Count == 0)
            return null;

        string[] files = new string[listView1.SelectedItems.Count];
        int i = 0;
        foreach (ListViewItem item in listView1.SelectedItems)
        {
            files[i++] = item.Text;
        }
        return files;
    }

listview2 содержит большие значки. Когда я перетаскиваю изображение из listview2, ничего не происходит. В listview2 selectedIndex Changed Я клонирую выбранный индекс в большой список изображений. Я проверяю изображение, помещая его в окно изображений, чтобы убедиться, что это действительное изображение, не показанное в приведенном ниже коде.

private void listView2_SelectedIndexChanged(object sender, EventArgs e)
    {
        ListView.SelectedIndexCollection indices = listView2.SelectedIndices;
        if (indices.Count > 0)
        {
            int imgIndex = listView2.SelectedIndices[0];
            DraggedImage = (Image)lvImageList.Images[imgIndex].Clone();

        }
    }

И для перетаскивания код перетаскивания, который я использую, и перетаскиваемое изображение может отображаться в графическом поле, как указано выше

 private void listView2_ItemDrag(object sender, ItemDragEventArgs e)
    {

        DoDragDrop(new DataObject(DataFormats.Bitmap, DraggedImage), DragDropEffects.All);
    }

Приложение не выдает никаких ошибок, за исключением того, что в окне вывода в Visual Studio отображается выбранное исключение: 'System.Runtime .InteropServices.COMException 'в System. Windows .Forms.dll Форма для всех списков и элемент управления win word настроены для разрешения удаления. Кроме того, если я открываю проводник, я могу перетащить изображения на элемент управления, и они будут отображаться должным образом. Есть ли идеи, что я делаю не так?

...