通过拆分在ComboBox上读取.text文件

时间:2014-06-17 11:05:29

标签: c# windows combobox

我试图从我的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());
}

2 个答案:

答案 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());
}

应该添加一些错误检查,但是现在让我们假装您的资源字符串格式正确并且格式化没有意外