我想在列表视图中显示文件名,但问题是列表视图没有显示任何项目。奇怪的部分是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 控件。