首页 > 解决方案 > 如何从文本资源文件中获取数据并放入组合框

问题描述

我在txt文件中有很多数据文件,比如这个简短的例子

123456
754124
956412
789654

它们在每个文件中可以有数十行。每个文件填充一个单独的组合框。从文件夹中的静态文件中,我可以使它工作

string[] fname = {"fridge", "washer", "freezer", "dishwasher"}; 

 for (int i = 0; i < fname.Length; i++)
 {
      string[] lineOfContents = File.ReadAllLines(@"d:\\temp\\" + fname[i] + ".txt");

      ComboBox cmbobox = (ComboBox)this.Controls["cmbobx_" + fname[i]];

      foreach (var line in lineOfContents)
      {
          string[] data = line.Split(new[] {Environment.NewLine}, StringSplitOptions.None);
          cmbobox.Items.Add(data[0]);
       }
       cmbobox.SelectedIndex = 0;
}

但是当我从嵌入式资源中读取数据时,我需要这样做。我将文本文件拉到 project.properties.resources 中,所以我将它们放在 exe 中。我知道我需要从资源中将其流式传输出来,但是我迷失了如何将流与所有换行符等进行转换并将其格式化以将其添加到组合框中。

我尝试了很多事情,我认为我得到的最接近的事情如下,尽管它告诉我我什么都没有(NULL)。

string[] fname = {"fridge", "washer", "freezer", "dishwasher"}; 
var assembly = Assembly.GetExecutingAssembly();
for (int i = 0; i < fname.Length; i++)
{
    string lineOfContents;
    string name = fname[i] + ".txt";

    using (Stream resourceStream = assembly.GetManifestResourceStream(name))
    {
       if (resourceStream != null)
       {
          using (StreamReader reader = new StreamReader(resourceStream))
          {
             lineOfContents = reader.ReadToEnd();
           }
        }
      }
      ComboBox cmbobox = (ComboBox)this.Controls["cmbobx_" + fname[i]];
      cmbobox.SelectedIndex = 0;
   }

将不胜感激将流放入组合框中的任何帮助。


感谢下面的链接,当我搜索时我没有得到它,所以谢谢,它有帮助。在我整理之前的工作代码是:

string[] fname = {"fridge", "washer", "freezer", "dishwasher"}; 

 for (int i = 0; i < fname.Length; i++)
 { 
   string resource_data = Properties.Resources.ResourceManager.GetString(fname[i]);

   string[] lineOfContents = resource_data.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);

   ComboBox cmbobox = (ComboBox)this.Controls["cmbobx_" + fname[i]];

    foreach (var line in lineOfContents)
    {
        string[] data = line.Split(new[] {Environment.NewLine}, StringSplitOptions.None);
        cmbobox.Items.Add(data[0]);
     }
        cmbobox.SelectedIndex = 0;
}

标签: c#comboboxresources

解决方案


感谢您的链接,当我搜索时我没有得到它,所以谢谢,它有帮助。在我整理之前的工作代码是:

string[] fname = {"fridge", "washer", "freezer", "dishwasher"}; 

 for (int i = 0; i < fname.Length; i++)
 { 
   string resource_data = Properties.Resources.ResourceManager.GetString(fname[i]);

   string[] lineOfContents = resource_data.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);

   ComboBox cmbobox = (ComboBox)this.Controls["cmbobx_" + fname[i]];

    foreach (var line in lineOfContents)
    {
        string[] data = line.Split(new[] {Environment.NewLine}, StringSplitOptions.None);
        cmbobox.Items.Add(data[0]);
     }
        cmbobox.SelectedIndex = 0;
}

推荐阅读