C#从组合框项目中获取ID并将其保存到settings.settings
我在组合框中设置了C#从组合框项目中获取ID并将其保存到settings.settings,c#,combobox,C#,Combobox,我在组合框中设置了数据绑定模式下来自SQL的数据源,其中我有ID和名称 现在我想,当用户选择组合框并选择名称时,名称的ID将存储在设置中。设置。因此,下次用户运行应用程序时,无需再次选择它 我试着用: private void cbWorkingPlace_SelectedIndexChanged(object sender, EventArgs e) { int NameId= Int32.Parse(cbName.SelectedIndex.ToStr
数据绑定模式下来自SQL的数据源,其中我有ID和名称
现在我想,当用户选择组合框
并选择名称
时,名称
的ID
将存储在设置中。设置
。因此,下次用户运行应用程序时,无需再次选择它
我试着用:
private void cbWorkingPlace_SelectedIndexChanged(object sender, EventArgs e)
{
int NameId= Int32.Parse(cbName.SelectedIndex.ToString());
Properties.Settings.Default.NameId= NameId;
Properties.Settings.Default.Save();
}
我的问题是,如果我更改组合框
,则ID
保存正常,但当我关闭应用程序时,ID
更改为-1
如何防止这种情况发生???不要每次更改组合框
索引时都写入设置
调用某个事件后,将组合框的值绑定到自定义属性,并将该属性的数据存储在设置中。这可以通过一个“保存按钮”来完成,它会给用户一个关于正在发生的事情的清晰反馈
另一种方法是打开另一个视图以获取这些设置,一旦有了这些设置,用户需要关闭视图以返回,请在此时保存您的设置
验证正在保存/使用的数据始终是一个好主意,因此直接绑定到数据存储并不是一个好主意。在保存之前检查值,因为-1是一种特殊情况。并考虑保存在其他事件中,如<代码>窗体。关闭< /代码>:在填充数据之后加载此值吗?<代码>cbName.SelectedIndex=Properties.Settings.Default.NameId代码>正在将组合框索引设置为保存的值。给我们更多的代码。我向Form1\u FormClosing
事件添加相同的Properties.Settings.Default.NameId=NameId Properties.Settings.Default.Save()
然后我添加断点,当我检查值是否正常,但保存为-1
时,在SelectedIndex中定义一个私有int值sel
,并更改add if语句以检查值,仅当索引!=-1
然后分配给sel
,然后在Form1\u FormClosing
save中保存。好的,我禁用SelectedIndexChanged事件
仅禁用Form1\u FormClosing事件
,现在可以了