无法找到以前写入的数据到组合框中

时间:2013-11-13 14:52:32

标签: c# user-interface combobox save

我有数据将写入文本文件,然后通过buton传输到组合框。 但是下次我启动gui时,我无法在组合框中找到以前的书面数据。 无论如何要将数据保存在组合框中?

3 个答案:

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