Перетащите элемент из ListView и поместите изображение на панель - PullRequest
0 голосов
/ 21 мая 2019

Прямо сейчас я изучаю c#, и я попытался создать функциональность для перетаскивания. Я хочу перетащить элемент из ListView (текст), который по каплям преобразуется в изображение в элементе управления Panel.

Изображения сохраняются в каталоге проекта bin/Debug.

До сих пор мне удавалось перетаскивать текст в текст или изображение в изображение из внешнего источника (изображения с моего рабочего стола или текст с интернет-страницы).

Это не то, что я хотел иметь в своей форме. Я хочу взять текст с помощью перетаскивания, добавить расширение в функцию (.png) и перетащить изображение на панель.

Это скриншот из моего приложения. Слева у меня есть ListView с текстом, справа у меня есть Panel.
Прямо сейчас у панели есть приветствие BackgroundImage, но когда я делаю перетаскивание, я хочу, чтобы оно имело BackgroundImage конкретного приложения слева.

Это код, который у меня есть сейчас. Благодаря этому я могу получать изображения с моего рабочего стола, но не текст из ListView.

private void panel1_DragDrop(object sender, DragEventArgs e) {
    foreach (string pic in (string[])e.Data.GetData(DataFormats.FileDrop)) {
        Image img = Image.FromFile(pic);
        panel1.BackgroundImage = img;
    }
}

private void panel1_DragEnter(object sender, DragEventArgs e) {
    e.Effect = DragDropEffects.Copy;
}

private void listView1_MouseDown(object sender, MouseEventArgs e) {
    listView1.DoDragDrop(listView1.SelectedItems,
        DragDropEffects.Copy | DragDropEffects.Move);
}

1 Ответ

1 голос
/ 21 мая 2019

Попробуйте: добавьте следующие события в ваш код.

private void Form1_Load(object sender, EventArgs e)
{
    panel1.AllowDrop = true;
}

private void listView1_ItemDrag(object sender, ItemDragEventArgs e)
{    
    listView1.DoDragDrop(listView1.SelectedItems[0].Text , DragDropEffects.Copy);
}

private void panel1_DragDrop(object sender, DragEventArgs e)
{
    panel1.BackgroundImage = Image.FromFile((string)e.Data.GetData(typeof(string)) + ".png");
}

private void panel1_DragEnter(object sender, DragEventArgs e)
{
    e.Effect = DragDropEffects.Copy;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...