C# WinForms 列表视图不显示项目/文件/文件夹



我想在列表视图中显示文件名,但问题是列表视图没有显示任何项目。奇怪的部分是listview.items.count表示项目已正确添加。项目只是没有显示在任何类型的 listview.view 中。编辑:列表视图拖放到选项卡控件上。


string[] files;
bool error = false;
    try   
    {        
          files = Directory.GetFiles(addDir /* this is the folder path*/, "*.txt", SearchOption.AllDirectories);
    }
    catch(Exception ex)
    {
        // the code will jump here if there any access restrictions
        MessageBox.Show(ex.Message);
        error = true;
    }
    if(!error)
    {
        foreach (string fi in files)
        {
            string fnameonly = System.IO.Path.GetFileNameWithoutExtension(fi);
            _listView1.Items.Add(fnameonly);
        }
    }

有时,创建一个新项目会有所帮助,验证它是否有效,然后添加更多功能,直到您了解是什么破坏了您的程序。下面的示例仅显示包含两个文件的列表视图。确保这适用于您的计算机。然后慢慢添加更多代码,并始终检查您的程序是否仍然有效。我将所有代码放在一个文件中,因为它更容易发布在堆栈溢出上,但您可以将其拆分为单独的文件。

另请参阅列表视图文档

using System;
using System.IO;
using System.Windows.Forms;
namespace WindowsFormsApp
{
    public class ListViewDemo : Form
    {
        public ListViewDemo()
        {
            var _listView1 = new ListView();
            string[] files = { @"C:tmpfile1.txt", @"c:pathtofile2.doc" };
            foreach (string fi in files)
            {
                string fnameonly = Path.GetFileNameWithoutExtension(fi);
                _listView1.Items.Add(fnameonly);
            }
            AutoSize = true;
            Controls.Add(_listView1);    
        }
    }
    static class Program
    {    
        [STAThread]
        static void Main()
        {
            Application.Run(new ListViewDemo());
        }
    }
}

这是一个非常愚蠢的错误,花了几天时间才发现。我不小心将内存分配给了通过拖放操作创建的 ListView 控件。

最新更新