C# 在组合框winforms中打开带有键/值的文本文件

C# 在组合框winforms中打开带有键/值的文本文件,c#,C#,我很难使用包含key=value条目的文本文件(例如:ABCD=ABCD)并使用C#程序中定义的字典打开该文件作为组合框 下面是我当前的代码,我使用add静态地定义了key/value字段(整个列表大约有30个条目) 字典供应商=新字典(); 供应商。添加(“ADVENE”、“ADVENE”); 供应商。添加(“DFG风险”、“DFG风险”); DataGridViewComboBoxColumn vendcol=新DataGridViewComboxColumn(); vendcol.Name

我很难使用包含key=value条目的文本文件(例如:ABCD=ABCD)并使用C#程序中定义的字典打开该文件作为组合框

下面是我当前的代码,我使用add静态地定义了key/value字段(整个列表大约有30个条目)

字典供应商=新字典();
供应商。添加(“ADVENE”、“ADVENE”);
供应商。添加(“DFG风险”、“DFG风险”);
DataGridViewComboBoxColumn vendcol=新DataGridViewComboxColumn();
vendcol.Name=“供应商”;
vendcol.HeaderText=“供应商”;
vendcol.DisplayMember=“值”;
vendcol.ValueMember=“Key”;
vendcol.DataSource=vendors.ToList();
dataGridView1.Columns.Add(vendcol);
如何将上述键/值项转换为文本文件,并在打开应用程序时由组合框使用

我曾尝试使用
StreamReader
,但我完全不知道如何实现它


谢谢

假设您的文本文件具有以下格式:

ADVENE=ADVENE
DFG RISK=DFG RISK
您可以使用以下代码对其进行解析:

var vendors = new Dictionary<string, string>();
using (var reader = new StreamReader(@"c:\temp\test.txt"))
{
    string line = string.Empty;
    while ((line = reader.ReadLine()) != null)
    {
        string[] keyValue = line.Split(new char[] { '=' });
        vendors.Add(keyValue[0], keyValue[1]);
    }
}

假设您的文本文件具有以下格式:

ADVENE=ADVENE
DFG RISK=DFG RISK
您可以使用以下代码对其进行解析:

var vendors = new Dictionary<string, string>();
using (var reader = new StreamReader(@"c:\temp\test.txt"))
{
    string line = string.Empty;
    while ((line = reader.ReadLine()) != null)
    {
        string[] keyValue = line.Split(new char[] { '=' });
        vendors.Add(keyValue[0], keyValue[1]);
    }
}


不太清楚你在问什么。您想知道如何读取一个文本文件,其中每一行都由KEY=VALUE格式的字符串组成?为什么需要一本字典?您是否有具有相同键但不同值的行?您是否计划让用户能够向组合框添加新数据并将其保存回文本文件以供以后使用?@Franck:使用文本文件的原因是允许用户修改供应商列表,因为我无法找到一种方法来动态增加当前组合框以添加内容这不是通过下拉菜单实现的。所以我认为,对于用户来说,唯一更容易的方法就是在他们想要添加其他供应商时添加到文本文件中。除非你知道如何在运行时添加到combobox,并在用户下次运行程序时保留添加的供应商???@Steve:我使用字典的原因是创建此程序的前一个人这样做了,他试图保留他的代码而不修改整件事。关键和价值是不同的。不太清楚你在问什么。您想知道如何读取一个文本文件,其中每一行都由KEY=VALUE格式的字符串组成?为什么需要一本字典?您是否有具有相同键但不同值的行?您是否计划让用户能够向组合框添加新数据并将其保存回文本文件以供以后使用?@Franck:使用文本文件的原因是允许用户修改供应商列表,因为我无法找到一种方法来动态增加当前组合框以添加内容这不是通过下拉菜单实现的。所以我认为,对于用户来说,唯一更容易的方法就是在他们想要添加其他供应商时添加到文本文件中。除非你知道如何在运行时添加到combobox,并在用户下次运行程序时保留添加的供应商???@Steve:我使用字典的原因是创建此程序的前一个人这样做了,他试图保留他的代码而不修改整件事。键和值不同。是否需要更改以下任何代码:DataGridViewComboxColumn vendcol=new DataGridViewComboxColumn();vendcol.Name=“供应商”;vendcol.HeaderText=“供应商”;vendcol.DisplayMember=“值”;vendcol.ValueMember=“Key”;vendcol.DataSource=vendors.ToList();dataGridView1.Columns.Add(vendcol);在实施您的建议后,“谢谢”似乎仍然不起作用。仍然将旧数据拉入comboboxI找到了它,发现我必须以两种不同的形式对其进行更改。我正在尝试在下拉列表中查看之前对输入文件进行排序,如何实现这一点?我尝试过使用linq方法,但使用上述代码似乎无法解决问题。使用SortedDictionary()而不是Dictionary()我是否需要更改以下任何代码:DataGridViewComboxColumn vendcol=new DataGridViewComboxColumn();vendcol.Name=“供应商”;vendcol.HeaderText=“供应商”;vendcol.DisplayMember=“值”;vendcol.ValueMember=“Key”;vendcol.DataSource=vendors.ToList();dataGridView1.Columns.Add(vendcol);在实施您的建议后,“谢谢”似乎仍然不起作用。仍然将旧数据拉入comboboxI找到了它,发现我必须以两种不同的形式对其进行更改。我正在尝试在下拉列表中查看之前对输入文件进行排序,如何实现这一点?我尝试过使用linq方法,但似乎无法用上面的代码理解它