0

我在 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
    }
}

我试过的:

  • Try-catch 构造函数 => 没有
  • 在visualstudio(2010)之外运行成功构建
  • 将项目拖入表单时以管理员身份运行 explorer.exe

    感谢您阅读我的问题

    编辑:
    当测试文件在桌面上时(%userprofile%\Desktop)。但它们存储在哪里并不重要。图片应该从浏览器或word文档拖到表单中

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

    解决方案:天哪……所以……我有点将公共静态 Main() 移动到 viewer.cs 文件中……我忘了添加 STAThread 属性。
    我在 Visual Studio 之外再次执行构建时发现了这一点,并且在异常形式中它显示线程需要是 STAThread 但该部分消息被隐藏并且很难找到

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

  • 4

    0 回答 0