Combobox и My.Settings

Я использую My.Settings для хранения различного текста для каждого элемента в выпадающем списке

Это выглядит так

Я добавил в настройки проекта 5 настроек типа "Строка"

Я использую этот код

    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, чтобы в следующий раз, когда я открою форму, она будет загружена.

Анель

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
Другие вопросы по тегам