目前,我正在学习c#
,并尝试创建拖放功能。我想从ListView(文本)中拖动一个项目,该项目一经拖放将在Panel控件中的Image中转换。
图像保存在项目的bin/Debug
目录中。
到目前为止,我已经设法将文本从外部源拖放到文本或图像到图像(来自台式机的图像或来自互联网页面的文本)。
这不是我想要的表格中的内容。我要拖动文本,在功能中添加扩展名(.png
),然后将图像放在面板上。
这是我应用程序中的screenshot。左边是带有文本的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);
}
答案 0 :(得分:1)
尝试一下:将以下事件添加到您的代码中。
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;
}