C# ListBox 不允许拖放

Posted

技术标签:

【中文标题】C# ListBox 不允许拖放【英文标题】:C# ListBox Does Not Allow Drag & Drop 【发布时间】:2019-05-28 03:08:33 【问题描述】:

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

【问题讨论】:

我刚刚意识到我需要将 [STAThread] 添加到我的 Program.cs 文件中才能使其正常工作。 参见我在 Code Project 上的文章 Drag-and-Drop ListBox。您也可以在那里下载和实施。 【参考方案1】:

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

【讨论】:

以上是关于C# ListBox 不允许拖放的主要内容,如果未能解决你的问题,请参考以下文章

ZK MVC在两个Listbox之间拖放

使用 gon-wpf 的 ListBox 拖放 - 使选择保持活动状态

拖放后在Treeview中获取子项的名称

在c#中删除listBoxItem时ListBox不刷新

在 C# 中解析 XML 数据并显示到 ListBox

C#中的listBox