C# Winform中ComboBox与ListBox读取文本文件内容不显示问题
问题原因
你的PopulateBoxes方法中读取文件的循环条件写反了:
- 当前使用的
while (inputFile.EndOfStream)含义是当流已经读取到文件末尾时,才执行循环内的代码 - 刚打开文件时流的位置在文件开头,
EndOfStream值为false,所以循环体一次都不会执行,自然没有数据添加到控件中
修复方案
把两处读取文件的循环条件都加上取反符!,改成while (!inputFile.EndOfStream)即可,修改后的PopulateBoxes代码如下:
private void PopulateBoxes() { try { StreamReader inputFile; inputFile = File.OpenText("Flavors.txt"); // 未到文件末尾时持续读取行 while (!inputFile.EndOfStream) { flavorsComboBox.Items.Add(inputFile.ReadLine()); } inputFile.Close(); inputFile = File.OpenText("Toppings.txt"); // 同上修改循环条件 while (!inputFile.EndOfStream) { toppingsListBox.Items.Add(inputFile.ReadLine()); } inputFile.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); this.Close(); } }
可选优化建议
- 可以给
StreamReader加上using语句,无需手动调用Close(),资源会自动释放,避免异常场景下的资源泄漏问题 - 可以先调用
File.Exists()判断目标文件是否存在,提前做缺失提示,避免文件丢失时直接退出程序
内容的提问来源于stack exchange,提问作者MohJoh
相关产品推荐
相关产品推荐

