我在程序中使用以下代码行。我通过textBox3.Text获取值,然后将其附加到已经有两个值的comboBox。
comboBox2.Items.Add(textBox3.Text);
它在运行时将值添加到应用程序。但是,一旦我关闭应用程序并再次运行应用程序,新添加的值就不会出现在下拉菜单中。
如何将值保存到comboBox2集合中。所有手册/帖子都指向仅添加方法来向项目添加值。我错过了什么......
答案 0 :(得分:0)
关闭应用程序时,可以通过序列化保存ComboBox项目:
首先,继续创建任何类并使用Serializable属性进行装饰。接下来,添加一个类型为List<string>
的字段和一个空白构造函数,如下所示:
[Serializable]
public class UserData //You can name this anything you like.
{
public List<string> Data = new List<string>();
public UserData() { }
}
接下来,当您关闭应用时,或者在点击保存按钮等其他操作期间,请使用以下代码:
UserData uData = new UserData();
foreach (object i in comboBox1.Items) // Change name of ComboBox if necessary.
{
uData.Data.Add(i.ToString());
}
XmlSerializer xs = new XmlSerializer(typeof(UserData));
using (FileStream fs = new FileStream("userData.xml", FileMode.OpenOrCreate)) // Change path accordingly.
{
xs.Serialize(fs, uData);
}
要在应用启动期间阅读数据,请使用以下代码:
XmlSerializer xs = new XmlSerializer(typeof(UserData));
UserData deserializedData; // This is the retrieved data. Use this after the following Using Block
using (FileStream fs = new FileStream("userData.xml", FileMode.OpenOrCreate)) //Again, change the path accordingly
{
deserializedData = (UserData)xs.Deserialize(fs);
}
//Now deserializedData contains the read data.
comboBox1.Items.Clear(); // Delete all items...
comboBox1.Items.AddRange(deserializedData.Data.ToArray<Object>()); //...and add the retrieved items