这些设置是从哪里来的

本文关键字:设置 | 更新日期: 2023-09-27 18:03:05

我不得不写一些非常简单的代码:

    private void frmMain_Load(object sender, EventArgs e)
    {
        string[] EmployeeNames = Settings.Default.Employee_Names.Split(new char[] {';'}, StringSplitOptions.RemoveEmptyEntries);
        employee_NameComboBox.Items.AddRange(EmployeeNames);
    }

    private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
    {
        string Employee_Names = string.Empty;
        foreach (string Name in employee_NameComboBox.Items)
        {
            Employee_Names += Name + ";";
        }
        if (Employee_Names.Length > 1)
        {
            Settings.Default.Employee_Names = Employee_Names.Substring(0, Employee_Names.Length - 1);
            Settings.Default.Save();
        }

    }
所以,为了测试我的代码,我添加了值"Foo;Bar"到我的设置。VS设计器中的设置但是当我运行代码的时候什么都没有。所以我添加了这段代码:
    private void AddName()
    {
        if (!employee_NameComboBox.Items.Contains(employee_NameComboBox.Text))
        {
            employee_NameComboBox.Items.Add(employee_NameComboBox.Text);
        }
    }

然后在employee_NameComboBox的Leave事件中调用它:

    private void employee_NameComboBox_Leave(object sender, EventArgs e)
    {
        AddName();
    }

为了测试这一点,我输入employee_NameComboBox并键入"Employee1"并离开CB,然后再次输入并键入"Employee2"并离开,现在当我单击下拉菜单时,我在Items Collection中有这些字符串。太棒了!

但是当我关闭应用程序然后进入我的设置。在解决方案资源管理器的属性下设置值"Foo;Bar"仍然在那里。

继续再次开始调试,当我点击下拉菜单时,值是"Employee1"answers"Employee2"。反过来,我在Windows资源管理器中搜索解决方案目录,试图找到新的设置文件,我根本找不到任何带有"Employee1"或"Employee2"的文件,我在任何文件中看到的都是"Foo;Bar"。

这是怎么回事?我要把钱存到某个地方去!

Also为什么调试器不使用设置中的值。设置或应用程序配置文件?

注意:我还尝试从Visual studio中查找并搜索值Employee1的整个解决方案,但无济于事。

我的最终结果是,我想发出一个应用程序与可编辑的组合框,可以保存和编辑,而无需重新编译。

这些设置是从哪里来的

当在运行时更改这些设置时,这些值将存储在以下目录中:

  C:'Documents and Settings'<username>'Local Settings'Application Data

这些设置将被您在vs中设置的任何内容覆盖在每次构建上。如果您想使用以前编译中的设置(或者一旦部署到客户机,更新后的以前版本),则必须使用settings . upgrade()。这应该在每次运行时调用一次,最容易在构造函数中调用。参见StackOverflow的另一个问题。c# .NET应用程序设置和升级