我无法将文件拖放到列表框中。我已将AllowDrop属性设置为true并添加了以下代码,但光标是一个圆,中间有一条线,不允许我放文件:
public List<string> files = new List<string>();
public Form1()
{
InitializeComponent();
this.listBox1.DragDrop += new DragEventHandler(this.listBox1_DragDrop);
this.listBox1.DragEnter += new DragEventHandler(this.listBox1_DragEnter);
}
private void listBox1_DragEnter(object sender, DragEventArgs e)
{
try
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
e.Effect = DragDropEffects.All;
}
else
{
e.Effect = DragDropEffects.None;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void listBox1_DragDrop(object sender, DragEventArgs e)
{
try
{
string[] s = (string[])e.Data.GetData(DataFormats.FileDrop, false);
int i;
for (i = 0; i < s.Length; i++)
{
listBox1.Items.Add(Path.GetFileName(s[i]));
files.Add(s[i]);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
我已经在另一个项目上成功完成了此操作,唯一的区别是我现在正在使用Visual Studio2017。关于为什么不起作用的任何想法吗?
答案 0 :(得分:0)
我刚刚意识到我需要在[Program.cs]文件中添加[STAThread]才能使其正常工作