【问题标题】:My.Settings not saving variablesMy.Settings 不保存变量
【发布时间】:2013-09-24 14:28:09
【问题描述】:

我有以下代码:

Imports System.IO

Public Class Form2

Dim strInitialDirectory As String
Dim strInitialFile As String
Const strDefaultFileDirectory As String = "C:\Users\Sam\Desktop\Visual Basic\Test"
Const strDefaultFileName As String = "\test.txt"
Dim strFileJPath1 As String = strInitialDirectory + strInitialFile
Dim strFileJPath2 As String = strDefaultFileDirectory + strDefaultFileName

Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    If My.Settings.strInitialDirectory = Nothing Or My.Settings.strInitialFile = Nothing Then
        My.Settings.strInitialDirectory = strDefaultFileDirectory
        My.Settings.strInitialFile = strDefaultFileName
    Else
        MsgBox("Else executed") ' debug 
        strInitialDirectory = strDefaultFileDirectory
        strInitialFile = strDefaultFileName
        strInitialDirectory = My.Settings.strInitialDirectory
        strInitialFile = My.Settings.strInitialFile
    End If
End Sub
End Class

基本上,当表单加载时,我希望它检查 My.Settings 中是否有任何内容,如果没有,请将值设置为默认值,但是在再次打开程序时,它不会执行 else 语句,让我相信我做错了什么并且设置没有保存。对此有任何意见吗?谢谢。

【问题讨论】:

  • 在加载事件结束时添加一个 My.Settings.Save
  • @dbasnett Derp,谢谢。

标签: vb.net visual-studio-2012


【解决方案1】:

您必须在 My.Settings 中调用保存功能

My.Settings.Save()

您应该在更新设置函数的末尾添加它。这将保存下一个会话的所有设置。

这里是一个 UpdateSettings 函数的示例:

Private Sub UpdateSettings()

    Console.WriteLine("Saving Settings")

    My.Settings.WO_imprevu = CheckBoxImprevu.Checked
    My.Settings.WO_prevu = CheckBoxPrevu.Checked
    My.Settings.Date_type = ComboBoxDateType.SelectedIndex
    My.Settings.Date_debut = DateTimePickerDebut.Value

    My.Settings.Save()

    Console.WriteLine("Settings Saved")
End Sub

【讨论】:

    【解决方案2】:

    尝试使用String.IsNullOrWhiteSpace() 而不是= Nothing

    将您的子更改为:

    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        If String.IsNullOrWhiteSpace(My.Settings.strInitialDirectory) OrElse String.IsNullOrWhiteSpace(My.Settings.strInitialFile) Then
            My.Settings.strInitialDirectory = strDefaultFileDirectory
            My.Settings.strInitialFile = strDefaultFileName
        Else
            MsgBox("Else executed") ' debug 
            strInitialDirectory = strDefaultFileDirectory
            strInitialFile = strDefaultFileName
            strInitialDirectory = My.Settings.strInitialDirectory
            strInitialFile = My.Settings.strInitialFile
        End If
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-22
      • 1970-01-01
      • 2012-08-15
      • 2014-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多