Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#从组合框项目中获取ID并将其保存到settings.settings_C#_Combobox - Fatal编程技术网

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事件
,现在可以了