Vb.net 组合框和My.Settings

Vb.net 组合框和My.Settings,vb.net,text,combobox,my.settings,Vb.net,Text,Combobox,My.settings,我正在使用我的.Settings为combobox中的每个项目存储不同的文本 看起来像这样 我在项目设置中添加了5个类型为“String”的设置 我正在使用这个代码 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If cmbperiod.SelectedItem = 1 Then txtnote.Text

我正在使用我的.Settings为combobox中的每个项目存储不同的文本

看起来像这样

我在项目设置中添加了5个类型为“String”的设置

我正在使用这个代码

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    If cmbperiod.SelectedItem = 1 Then
        txtnote.Text = My.Settings.first()
    ElseIf cmbperiod.SelectedItem = 2 Then
        txtnote.Text = My.Settings.second()
    ElseIf cmbperiod.SelectedItem = 3 Then
        txtnote.Text = My.Settings.third()
    ElseIf cmbperiod.SelectedItem = 4 Then
        txtnote.Text = My.Settings.fourth()
    ElseIf cmbperiod.SelectedItem = 5 Then
        txtnote.Text = My.Settings.fifth()
    End If
End Sub
我可以从my.settings加载值,但如何编辑它

例如,我想在第三个期间和表单关闭时键入注释,以将该文本保存到我的设置中。第三,所以下次打开表单时,它将被加载

阿内尔

这将解决您的问题,但只保存当前选定的值。
因此,例如,如果要保存多个值,则必须添加一个命令,如
txtnote.leave
,该命令将捕获当前更改。
例如:

Private Sub txtnote_Leave(sender As Object, e As EventArgs) Handles txtnote.Leave
        If cmbperiod.SelectedItem = 1 Then
            My.Settings.first() = txtnote.Text
        ElseIf cmbperiod.SelectedItem = 2 Then
            My.Settings.second() = txtnote.Text
        ElseIf cmbperiod.SelectedItem = 3 Then
            My.Settings.third() = txtnote.Text
        ElseIf cmbperiod.SelectedItem = 4 Then
            My.Settings.fourth() = txtnote.Text
        ElseIf cmbperiod.SelectedItem = 5 Then
            My.Settings.fifth() = txtnote.Text
        End If
    End Sub
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
        If cmbperiod.SelectedItem = 1 Then
            txtnote.Text = My.Settings.first()
        ElseIf cmbperiod.SelectedItem = 2 Then
            txtnote.Text = My.Settings.second()
        ElseIf cmbperiod.SelectedItem = 3 Then
            txtnote.Text = My.Settings.third()
        ElseIf cmbperiod.SelectedItem = 4 Then
            txtnote.Text = My.Settings.fourth()
        ElseIf cmbperiod.SelectedItem = 5 Then
            txtnote.Text = My.Settings.fifth()
        End If
    End Sub
在此之后,您可能希望执行
SelectedIndexChanged
,因此当您选择不同的
ComboBox
值时,您也可以加载
txtnote
值。
您将这样做:

Private Sub txtnote_Leave(sender As Object, e As EventArgs) Handles txtnote.Leave
        If cmbperiod.SelectedItem = 1 Then
            My.Settings.first() = txtnote.Text
        ElseIf cmbperiod.SelectedItem = 2 Then
            My.Settings.second() = txtnote.Text
        ElseIf cmbperiod.SelectedItem = 3 Then
            My.Settings.third() = txtnote.Text
        ElseIf cmbperiod.SelectedItem = 4 Then
            My.Settings.fourth() = txtnote.Text
        ElseIf cmbperiod.SelectedItem = 5 Then
            My.Settings.fifth() = txtnote.Text
        End If
    End Sub
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
        If cmbperiod.SelectedItem = 1 Then
            txtnote.Text = My.Settings.first()
        ElseIf cmbperiod.SelectedItem = 2 Then
            txtnote.Text = My.Settings.second()
        ElseIf cmbperiod.SelectedItem = 3 Then
            txtnote.Text = My.Settings.third()
        ElseIf cmbperiod.SelectedItem = 4 Then
            txtnote.Text = My.Settings.fourth()
        ElseIf cmbperiod.SelectedItem = 5 Then
            txtnote.Text = My.Settings.fifth()
        End If
    End Sub

当用户选择一个新项目时,您也希望执行该代码,否则前一个期间的值将丢失;当窗体关闭时,将值保存到存储在My.Settings中的变量中。最重要的部分是监督。我想,您忘了调用My.Settings.save,否则将不会提交任何内容。@MrCoDeXeR我没有在代码中的任何位置使用My.Settings.save函数,并且它正常工作。停止应用程序,重新启动并将值拉回来。你必须调用它,否则它不会提交,下次你运行应用程序时,它将不会有我保证的值…伙计,如果你愿意,我可以给你我的Skype,我将共享我的屏幕,这样你就可以看到它是有效的:)你把它们拉回来了吗?