У меня есть 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 настроены для разрешения удаления. Кроме того, если я открываю проводник, я могу перетащить изображения на элемент управления, и они будут отображаться должным образом. Есть ли идеи, что я делаю не так?