如何在C#Visual Studio中保存和加载由字符串和浮点值组成的组合框项?

如何在C#Visual Studio中保存和加载由字符串和浮点值组成的组合框项?,c#,visual-studio,combobox,C#,Visual Studio,Combobox,我正在开发一个小型的C#应用程序,它将单件的数量从总重量除以单件的参考重量中计算出来。 我想从组合框中选择参考权重。此参考权重由名称和浮点值组成。我已经可以将新的参考权重添加到组合框并删除它们。但我需要知道如何拯救他们。我已经尝试将其保存到文件中,并尝试使用应用程序属性设置,但没有成功。有人能告诉我保存这些组合框项目的最佳方法吗?我只希望它们在程序关闭时保存(关闭时保存)并在启动时加载 这是我的密码: // Content item for the combo box priva

我正在开发一个小型的C#应用程序,它将单件的数量从总重量除以单件的参考重量中计算出来。 我想从组合框中选择参考权重。此参考权重由名称和浮点值组成。我已经可以将新的参考权重添加到组合框并删除它们。但我需要知道如何拯救他们。我已经尝试将其保存到文件中,并尝试使用应用程序属性设置,但没有成功。有人能告诉我保存这些组合框项目的最佳方法吗?我只希望它们在程序关闭时保存(关闭时保存)并在启动时加载

这是我的密码:

    // Content item for the combo box
    private class Item
    {
        public string Name;
        public string Value;
        public Item(string name, string value)
        {
            Name = name; Value = value;
        }
        public override string ToString()
        {
            return Name;


        }
    }

        public Form1()
    {
        InitializeComponent();




        //Combobox Items
        comboBox1.Items.Add(new Item("Referenz Gewicht", "1,5"));
        comboBox1.Items.Add(new Item("Ticket XYZ", "2,4"));
        comboBox1.Items.Add(new Item("Ticket ABC", "0,7"));



}

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {

        // Display the Value property
        Item itm = (Item)comboBox1.SelectedItem;
        Console.WriteLine("{0}, {1}", itm.Name, itm.Value);

        //Weist ausgewählten Wert textbox2 zu.
        textBox2.Text = itm.Value;



    }

    private void button2_Click(object sender, EventArgs e)
    {

        comboBox1.Items.Add(new Item(textBox4.Text, textBox3.Text));



    }



    private void button1_Click_1(object sender, EventArgs e)
    {
        comboBox1.Items.Remove(comboBox1.SelectedItem);
    }
}

}

要编写您的项目

StringBuilder sb = new StringBuilder();
foreach(Item itm in combobox1.Items)
{
   sb.AppendFormat("{0};{1}{2}", itm.Name, itm.Value, Environment.NewLine);
}
File.WriteAllText("Data.txt", sb.ToString());
在组合中读回您的项目

foreach(string line in File.ReadLines("data.txt"))
{
    string[] parts = line.Split(';');
    Item itm = new Item() { Name = parts[0], Value = parts[1]};
    combobox1.Items.Add(itm);
}
还要考虑“float”值应该是真实的float值,而不是字符串属性。当您从文件中读回值时(需要从文件中的字符串转换为内存中的浮点值),这会带来一些复杂性,但如果您处理的是浮点值,这是正确的方法

使用Linq的简明版本

写作:

var text = combobox1.Items.Cast<Item>()
                          .Select(x => string.Format("{0};{1}", 
                           x.Name, x.Value));
File.WriteAllText(@"data.txt", string.Join(Environment.NewLine, text));
var items = File.ReadLines(@"data.txt").Select(x => x.Split(';'))
                                       .Select(k => new Item() 
                                        {Name = k[0], Value = k[1]});
combobox1.Items.AddRange(items.ToArray());

(好吧,它很简洁,但为了清晰起见,我还是喜欢详细的版本)

来写你的文章

StringBuilder sb = new StringBuilder();
foreach(Item itm in combobox1.Items)
{
   sb.AppendFormat("{0};{1}{2}", itm.Name, itm.Value, Environment.NewLine);
}
File.WriteAllText("Data.txt", sb.ToString());
在组合中读回您的项目

foreach(string line in File.ReadLines("data.txt"))
{
    string[] parts = line.Split(';');
    Item itm = new Item() { Name = parts[0], Value = parts[1]};
    combobox1.Items.Add(itm);
}
还要考虑“float”值应该是真实的float值,而不是字符串属性。当您从文件中读回值时(需要从文件中的字符串转换为内存中的浮点值),这会带来一些复杂性,但如果您处理的是浮点值,这是正确的方法

使用Linq的简明版本

写作:

var text = combobox1.Items.Cast<Item>()
                          .Select(x => string.Format("{0};{1}", 
                           x.Name, x.Value));
File.WriteAllText(@"data.txt", string.Join(Environment.NewLine, text));
var items = File.ReadLines(@"data.txt").Select(x => x.Split(';'))
                                       .Select(k => new Item() 
                                        {Name = k[0], Value = k[1]});
combobox1.Items.AddRange(items.ToArray());

(好吧,它很简洁,但为了清楚起见,我还是更喜欢详细的版本)

如果您的问题是将数据保存到文件中,那么为什么要发布这堵与问题无关的代码墙。尝试将项目保存到文件的代码在哪里?不在该代码中。当它不起作用时我把它取了下来。。。对不起,你应该把它贴出来。这将为我们提供解释错误和修复所需的信息,itI将发布代码的相关部分。我可以将组合框项目写入一个文件。但它只是一个字符串列表,比如:“stringxyz213”,我想我需要将它拆分为一个字符串和一个浮点值。或者如何只在文件中使用字符串来加载组合框?如果您的问题是将数据保存到文件中,那么为什么要将这堆无关的代码贴到您的问题上。尝试将项目保存到文件的代码在哪里?不在该代码中。当它不起作用时我把它取了下来。。。对不起,你应该把它贴出来。这将为我们提供解释错误和修复所需的信息,itI将发布代码的相关部分。我可以将组合框项目写入一个文件。但它只是一个字符串列表,比如:“stringxyz213”,我想我需要将它拆分为一个字符串和一个浮点值。或者,如何只在文件中使用字符串来加载组合框?