我有数据将写入文本文件,然后通过buton传输到组合框。 但是下次我启动gui时,我无法在组合框中找到以前的书面数据。 无论如何要将数据保存在组合框中?
答案 0 :(得分:0)
不,如果重新启动应用程序,则无法自动保留组合框的内容。 您每次都必须重新加载数据。
答案 1 :(得分:0)
当然,有很多方法。我建议使用<appSettings>
文件中的app.config
。您可以轻松阅读这些设置。首先,添加对System.Configuration
的引用。接下来,构建一些扩展方法以简化过程:
public static class Extensions
{
public static void SetValue(this KeyValueConfigurationCollection o,
string key,
string val)
{
if (!o.AllKeys.Contains(key)) { o.Add(key, val); }
else { o[key].Value = val; }
}
public static string GetValue(this NameValueCollection o,
string key,
object defaultVal = null)
{
if (!o.AllKeys.Contains(key)) { return Convert.ToString(defaultVal); }
return o[key];
}
}
接下来,当您想从设置中获取值时,请执行以下操作:
var val = ConfigurationManager.AppSettings.GetValue("ComboBoxValue");
然后,当您想要设置值时,请执行以下操作:
var config = ConfigurationManager.OpenExeConfiguration(
ConfigurationUserLevel.None);
var app = config.AppSettings.Settings;
app.SetValue("ComboBoxValue", comboBox.Text);
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
答案 2 :(得分:0)
首先创建一个名为Combovalues的类型为stringCollection和Scope的设置(如果你需要为它添加一些值)然后使用这个代码(这是一个骨架代码,验证和其他保存和删除规则是你选择的适用):
private BindingSource bs;
public Form1()
{
InitializeComponent();
bs = new BindingSource();
bs.DataSource = Properties.Settings.Default.Combovalues;
}
private void Form1_Load(object sender, EventArgs e)
{
comboBox1.DataSource = bs;
}
//button1 is for adding values.
private void button1_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(textBox1.Text))
{
bs.Add(textBox1.Text);
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
//this will persist to disk the changes made
//in this application session.
Properties.Settings.Default.Save();
}
//button2 is for deleting values
private void button2_Click(object sender, EventArgs e)
{
//removes the currently selected item in the combobox.
bs.RemoveCurrent();
}