我在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
}
}
我的尝试:
时,以管理员身份运行explorer.exe
感谢您阅读我的问题
编辑:
当测试文件在桌面上时(%userprofile%\ Desktop)。但它们存储的位置无关紧要。图像应该从浏览器或word文档拖动到表单
另一个编辑:
当试图在没有visual studio的情况下运行它时,我得到一个InvalidOperationException,它发生在AllowDrop = true;但是我试着抓住它时没有反应
解:
OMG ...所以....我有点将public static Main()移动到viewer.cs文件中....我忘了添加STAThread属性。
我在Visual Studio外部执行构建时发现了这一点,并且在异常表单中它显示该线程需要是一个STAThread但是该部分消息是隐藏的并且很难找到
无论如何:总是使用STATHREAD:P