在表单上显示已删除的图像

时间:2013-06-30 04:00:42

标签: c# winforms drag-and-drop

我有一个C#应用程序,我希望它在表单上放置一个图像时,表单中的一个图片框显示图像。我试过这个

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

    private void Form1_DragDrop(object sender, DragEventArgs e)
    {
        Graphics p = pictureBox1.CreateGraphics();
        p.DrawImage((Image)e.Data.GetData(DataFormats.Bitmap), new Point(0, 10));
    }

但它不起作用。

请问我做错了什么?

2 个答案:

答案 0 :(得分:1)

我认为你是从文件中拖出来的。 简单的代码就是这样:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        this.AllowDrop = true;
        this.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop);
        this.DragEnter += new System.Windows.Forms.DragEventHandler(this.Form1_DragEnter);
    } 
    private void Form1_DragEnter(object sender, DragEventArgs e)
    {
        if (e.Data.GetDataPresent(DataFormats.FileDrop))
        {
            e.Effect = DragDropEffects.Copy; 
        }
        else
        {
            e.Effect = DragDropEffects.None;
        }
    }

    private void Form1_DragDrop(object sender, DragEventArgs e)
    {
        string[] filex = (string[])e.Data.GetData(DataFormats.FileDrop);
        if (filex.Length > 0)
        { 
                pictureBox1.ImageLocation = filex[0]; 

        }
    }

}

答案 1 :(得分:0)

我真的希望这不是解决方案,但你没有提供太多信息,所以我将从这里开始,当你向我们提供更多信息时我们会去。 什么时候你把这个样本绑定到正确的事件? 如:

this.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop);
this.DragEnter += new System.Windows.Forms.DragEventHandler(this.Form1_DragEnter);

另外,在初始化时,你做了:

AllowDrop = true;