如何在C# WPF的ListBox中显示.txt文件内容?
解决WPF ListBox加载txt文件姓名的步骤
我来一步步帮你搞定这个问题,分文件放置、代码实现两部分说:
一、txt文件的保存位置与项目设置
最简单的方式是把txt文件整合到你的WPF项目里,这样编译后会自动跟着程序走:
- 在Visual Studio的解决方案资源管理器里,右键你的项目 → 添加 → 现有项,选中你的txt文件(建议命名为
Names.txt,方便识别)。 - 选中刚添加的txt文件,在右侧属性窗口里,把复制到输出目录改成如果较新则复制,生成操作保持内容即可。
这样编译后,txt文件会和你的exe程序在同一个文件夹里,程序就能轻松定位到它。
二、C#代码实现读取与显示
打开你的窗口后台代码(比如MainWindow.xaml.cs),在窗口的构造函数里(记得放在InitializeComponent()之后)编写逻辑,或者绑定Loaded事件来执行:
核心代码示例
public MainWindow() { InitializeComponent(); // 1. 拼接txt文件的完整路径:当前程序运行目录 + 文件名 string filePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Names.txt"); try { // 2. 读取文件的全部文本内容 string fileContent = System.IO.File.ReadAllText(filePath); // 3. 解析内容,提取出所有姓名 // 先按空格拆分每个"姓名+年龄"单元,再按逗号拆分出姓名部分,最后去掉多余空格 var names = fileContent.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries) .Select(item => item.Split(',')[0].Trim()) .ToList(); // 4. 将姓名加载到ListBox中 // 方式一:逐个添加项 foreach (var name in names) { listBox1.Items.Add(name); } // 方式二:直接绑定数据源(更符合WPF的MVVM思路) // listBox1.ItemsSource = names; } catch (Exception ex) { // 简单的异常处理,避免程序崩溃并提示用户 MessageBox.Show($"读取文件出错:{ex.Message}"); } }
代码说明
AppDomain.CurrentDomain.BaseDirectory:获取当前程序的运行目录,这样不管你把程序放到哪个路径下,都能准确找到txt文件。- 解析逻辑:针对你txt里
姓名, 年龄 姓名, 年龄的格式,先拆分出每个“姓名+年龄”的单元,再提取出姓名部分,确保只显示你需要的内容。 - 异常处理:加个try-catch可以避免因为文件丢失、格式错误等问题导致程序直接崩溃,提升用户体验。
小提示
如果你的ListBox在XAML里的命名不是listBox1,记得把代码里的名称改成你实际设置的名字哦。
内容的提问来源于stack exchange,提问作者cloongc




