我试图从我的DLL上的文本文件中读取但它只读取第一行(重复)
文字文件如:
100 UserName1 Job
101 UserName2 Job
102 UserName3 Job
103 UserName4 Job
104 UserName5 Job
105 UserName6 Job
106 UserName7 Job
107 UserName8 Job
所以基本上我在我的ComboBox上复制了“UserName1”。 (我只想阅读第二个单元格。这意味着用户名)
我的代码:
try
{
Assembly assembly = Assembly.LoadFile(Application.StartupPath + "/MyLists.dll");
System.Resources.ResourceManager resourcemanager = new System.Resources.ResourceManager("ClassLibrary1.Properties.Resources", assembly);
string[] strArrays15 = resourcemanager.GetString("JobList").Split('\t');
for (int t = 1; t < (int)strArrays15.Length; t++)
comboBox1.Items.AddRange(strArrays15[1].Split('\n'));
return;
}
catch (Exception ex )
{
MessageBox.Show(ex.ToString());
}
答案 0 :(得分:1)
问题出现在你的循环中:
for (int t = 1; t < (int)strArrays15.Length; t++)
comboBox1.Items.AddRange(strArrays15[1].Split('\n'));
您总是使用使用第一项的strArrays15[1]
。更改为使用递增的t
:
for (int t = 1; t < (int)strArrays15.Length; t++)
comboBox1.Items.AddRange(strArrays15[t].Split('\n'));
另一种写这种方法可以防止这种简单的拼写错误:
foreach(String item in strArrays15)
comboBox1.Items.AddRange(item.Split('\n'));
答案 1 :(得分:1)
假设您的资源字符串有\n
作为换行符分隔符,\t
作为行的列之间的分隔符,那么您的循环应该是
try
{
Assembly assembly = Assembly.LoadFile(Application.StartupPath + "/MyLists.dll");
System.Resources.ResourceManager resourcemanager = new System.Resources.ResourceManager("ClassLibrary1.Properties.Resources", assembly);
string[] strArrays15 = resourcemanager.GetString("JobList").Split('\n');
for (int row = 0; row < strArrays15.Length; row++)
{
string[] columns = strArrays15[row].Split('\t')
comboBox1.Items.Add(columns[1]);
}
return;
}
catch (Exception ex )
{
MessageBox.Show(ex.ToString());
}
应该添加一些错误检查,但是现在让我们假装您的资源字符串格式正确并且格式化没有意外