C#Dragdrop事件不起作用

时间:2013-10-08 06:34:47

标签: c# drag-and-drop

我在C#中创建了一个小表单并向其注册了一些拖放事件。但我不能让它正常工作!

目标:将文件从explorer.exe拖到表单中,并将其处理,并将照片拖入表单。我通过将.txt文件从桌面拖到表单中来测试代码。这样做时会显示(/)光标

代码:

public partial class Viewer : Form
{
    public Viewer()
    {
        InitializeComponent();
        this.AllowDrop = true;
        this.DragEnter += new DragEventHandler(Viewer_DragEnter);
        this.DragDrop += new DragEventHandler(Viewer_DragDrop);
    }
    public void Viewer_DragEnter(object sender, DragEventArgs e)
    {
        Console.WriteLine("Viewer_DragEnter");// Line has breakpoint
    }
    public void Viewer_DragDrop(object sender, DragEventArgs e)
    {
        Console.WriteLine("Viewer_DragDrop: "+e.Data.GetFormats());// Line has breakpoint
    }
}

我的尝试:

  • 尝试捕获构造函数=>没有
  • 在visualstudio之外运行成功构建(2010)
  • 将项目拖到表单

    时,以管理员身份运行explorer.exe

    感谢您阅读我的问题

    编辑:
    当测试文件在桌面上时(%userprofile%\ Desktop)。但它们存储的位置无关紧要。图像应该从浏览器或word文档拖动到表单

    另一个编辑:
    当试图在没有visual studio的情况下运行它时,我得到一个InvalidOperationException,它发生在AllowDrop = true;但是我试着抓住它时没有反应

    解: OMG ...所以....我有点将public static Main()移动到viewer.cs文件中....我忘了添加STAThread属性。
    我在Visual Studio外部执行构建时发现了这一点,并且在异常表单中它显示该线程需要是一个STAThread但是该部分消息是隐藏的并且很难找到

    无论如何:总是使用STATHREAD:P

  • 0 个答案:

    没有答案