这些设置是从哪里来的
本文关键字:设置 | 更新日期: 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应用程序设置和升级