我必须非常简单的代码:
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();
}
}
因此,为了测试我的代码,我在 VS Designer 中的 Settings.Settings 中添加了值“Foo;Bar”,但是当我运行代码时,什么都没有出现。所以我添加了这段代码:
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 中有这些字符串。伟大的!
但是,当我关闭应用程序然后转到解决方案资源管理器中属性下的 settings.settings 时,值“Foo;Bar”仍然存在。
继续再次开始调试,当我单击下拉菜单时,值为“Employee1”和“Employee2”。反过来,我在 Windows 资源管理器中搜索解决方案目录以尝试找到新的设置文件,但我根本找不到任何带有“Employee1”或“Employee2”的文件,我在任何文件中看到的都是“Foo;Bar”。
怎么会这样?我正在保存到某个地方,但是在哪里!
另外为什么调试器不使用 settings.settings 或 App.Config 文件中的值?!?!?!
注意:我还尝试从 Visual Studios 中查找并搜索值 Employee1 的整个解决方案,但无济于事。
我的最终结果是我想发送一个带有可编辑组合框的应用程序,无需重新编译即可保存和编辑。