我在 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
}
}
我试过的:
感谢您阅读我的问题
编辑:
当测试文件在桌面上时(%userprofile%\Desktop)。但它们存储在哪里并不重要。图片应该从浏览器或word文档拖到表单中
另一个编辑:
当试图在没有 Visual Studio 的情况下运行它时,我得到一个 InvalidOperationException,发生在 AllowDrop = true; 但是当我试图抓住它时我没有反应
解决方案:天哪……所以……我有点将公共静态 Main() 移动到 viewer.cs 文件中……我忘了添加 STAThread 属性。
我在 Visual Studio 之外再次执行构建时发现了这一点,并且在异常形式中它显示线程需要是 STAThread 但该部分消息被隐藏并且很难找到
无论如何:总是使用 STHREAD :P