【问题标题】:Combobox and My.Settings组合框和 My.Settings
【发布时间】:2014-09-10 10:23:12
【问题描述】:

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

看起来像这样

我在项目设置中添加了 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 加载值,但我该如何编辑它。

例如,我想在第三个期间键入注释并在 Form_Closing 上将该文本保存到我的 settings.third 中,以便下次打开表单时它会被加载。

安乐

【问题讨论】:

  • 您会希望在用户选择新项目时也执行该代码,否则上一个期间的值会丢失;将值保存到表单关闭时存储在 My.Settings 中的变量。

标签: vb.net text combobox my.settings


【解决方案1】:
  Private Sub Form_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
        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

这将解决您的问题,但只会保存当前选择的值。
因此,例如,如果您想保存多个值,则必须添加一个类似 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

在此之后,您可能想要执行SelectedIndexChanged,因此当您选择不同的ComboBox 值时,您也可以加载txtnote 值。
您将这样做:

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.Save 否则什么都不会提交。
  • @MrCoDeXeR 我没有在我的代码中的任何地方使用 My.Settings.Save 函数,它正在正常工作。
  • 停止应用程序并重新启动并拉回值。你必须调用它,否则它不会提交,并且下次运行应用程序时它不会有我保证的那些值......
  • 伙计,如果你愿意,我可以给你我的 Skype,我会分享我的屏幕,所以你可以看到它的工作原理 :)
  • 你把它们拉回来了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-17
  • 2012-02-15
  • 1970-01-01
相关资源
最近更新 更多