组合框和列表框不显示文本文件的内容

Posted

技术标签:

【中文标题】组合框和列表框不显示文本文件的内容【英文标题】:ComboBox & ListBox are not displaying contents of text file 【发布时间】:2021-12-25 06:34:19 【问题描述】:

我有一项任务是为一家冰淇淋店创建一个订单表格,为了将配料和口味放入列表和组合框中,我需要从一个文本文件中读取它。我按照说明和非常糟糕的视频教程进行操作,并且我的 bin/debug 文件夹中有我的文本文件,文件中包含了各自的风格和配料。它运行良好,除了下拉列表是空白的,列表框也是如此。这是 C#,我正在使用 Windows 窗体应用程序。这是我的代码

namespace Lab5_

    public partial class Form1 : Form
    
        public Form1()
        
            InitializeComponent();
            saveButton.Text = "&Save";
            exitButton.Text = "&Exit";

        

        private void Form1_Load(object sender, EventArgs e)
        
            PopulateBoxes();

            flavorsComboBox.SelectedItem = "Vanilla";
        

        private void exitButton_Click(object sender, EventArgs e)
        
            this.Close();
        

        private void saveButton_Click(object sender, EventArgs e)
        
            try
            
                // writes order information to output file
                StreamWriter outputFile;
                outputFile = File.AppendText("Orders.txt");

                outputFile.WriteLine(DateTime.Now.ToString("mm/dd/yyyy"));

                if (sugarConeRadioButton.Checked)
                
                    outputFile.WriteLine("Sugar Cone");
                
                else
                
                    outputFile.WriteLine("Waffle Cone");
                

                outputFile.WriteLine(flavorsComboBox.SelectedItem.ToString());

                for (int count = 0; count < toppingsListBox.Items.Count; count++)
                
                    if (toppingsListBox.GetSelected(count))
                    
                        outputFile.WriteLine(toppingsListBox.Items[count]);
                    
                

                outputFile.WriteLine();
                outputFile.Close();
            
            catch (Exception ex)
            
                MessageBox.Show(ex.Message);
            

            sugarConeRadioButton.Checked = true;
            flavorsComboBox.SelectedItem = "Vanilla";
            toppingsListBox.ClearSelected();
            sugarConeRadioButton.Focus();

        

        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();
            
        

    

【问题讨论】:

您需要debug your code。 while (inputFile.EndOfStream) 可能不会像你认为的那样做。 PopulateBoxes 中的两个 while 循环都有同样的问题。使用调试器单步调试代码,看看是否能找出原因。 (如果你只是非常仔细地阅读代码并思考它在做什么,你可能甚至不需要调试器就可以弄清楚。) 把你的两个文本文件放在你的项目源文件夹中。这样您就可以像编辑任何其他文件一样编辑它们。右键单击每个文件并选择属性。 (从内存中,在手机上) 将文件类型属性设置为 Content,将复制属性设置为 始终复制。现在,当您编译代码时,文件将被复制到项目的输出文件夹(EXE 所在的位置) 我投票结束这个问题,因为要求其他人调试您的代码不是问题。 【参考方案1】:

如果您希望逐行查看整个文件内容,如果您使用 System.IO.File.ReadAllLines 帮助程序,文件 IO 生活会更轻松

例如

    private void PopulateBoxes()
    
        try
        
            flavorsComboBox.DataSource = File.ReadAllLines("Flavors.txt").ToList();

            toppingsListBox.DataSource = File.ReadAllLines("Toppings.txt").ToList();
        
        catch (Exception ex)
        
            MessageBox.Show(ex.Message);
        
    

或者

    private void PopulateBoxes()
    
        try
        
            flavorsComboBox.Items.AddRange(File.ReadAllLines("Flavors.txt"));

            toppingsListBox.Items.AddRange(File.ReadAllLines("Toppings.txt"));
        
        catch (Exception ex)
        
            MessageBox.Show(ex.Message);
        
    

【讨论】:

以上是关于组合框和列表框不显示文本文件的内容的主要内容,如果未能解决你的问题,请参考以下文章

我可以从文本文件中制作动态组合框吗?

检查多个组合框和文本框的内容

C# 验证事件:测试空白文本框和数字验证?

MS Access - 带有组合框和文本框的 If 语句

如何向java jframe中添加下拉列表 按钮 文本框 最后把信息存储在文件里

网格视图内的文本框不显示数据