C#ListBox不允许拖放

时间:2018-12-31 17:21:40

标签: c# drag-and-drop listbox

我无法将文件拖放到列表框中。我已将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。关于为什么不起作用的任何想法吗?

1 个答案:

答案 0 :(得分:0)

我刚刚意识到我需要在[Program.cs]文件中添加[STAThread]才能使其正常工作