c# - 如何从文本资源文件中获取数据并放入组合框
问题描述
我在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;
}
解决方案
感谢您的链接,当我搜索时我没有得到它,所以谢谢,它有帮助。在我整理之前的工作代码是:
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# - 如何异步调用 Lisp 函数?
- html - 尝试控制视频大小时,是否有解决方案可以消除在 iframe 上使用 40% 所产生的空白空间?
- mongodb - 在 mongo db 中获取最后更新的集合
- c# - 返工删除函数以更改数据库值 ASP.Net
- angular - 如何使用 cypress 在 Angular 应用程序中拖放元素?
- sql - 关于 SQL 查询的建议(我的似乎过于复杂,甚至会吐出标量子查询错误)
- spacy - 关于 ner/spacy 与 pdf/docx 文件及其文本位置的一般问题
- php - 表单:不发送输入 - 提交不起作用(html/php)
- python - Sqlalchemy 子查询标量
- ms-access - 您可以创建一个访问按钮来搜索表单上的多个字段吗?