繁体   English   中英

从ListView拖动项目并将图像拖放到面板上

[英]Drag an Item from a ListView and drop an Image on a Panel

现在,我正在学习c#并尝试创建拖放功能。 我想从ListView(文本)中拖动一个项目,该项目一经拖放将在Panel控件中的Image中转换。

图像保存在项目的bin/Debug目录中。

到目前为止,我已经设法将文本从外部源拖放到文本或从图像拖放到图像(从台式机或互联网页面上的文本)。

这不是我想要在表单中包含的内容。 我要拖动文本,在函数( .png )中添加扩展名,然后将图像放在面板上。

这是我的应用程序的屏幕截图 左边是带有文本的ListView,右边是面板。
现在,面板上有一个欢迎的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);
}

尝试以下操作:将以下事件添加到您的代码中。

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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM