首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >My.Settings不保存变量

My.Settings不保存变量
EN

Stack Overflow用户
提问于 2013-09-24 14:28:09
回答 2查看 9.1K关注 0票数 2

我有以下代码:

代码语言:javascript
复制
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语句,让我相信我做错了什么,设置没有保存。对此有什么意见吗?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-24 16:15:33

您必须在My.Settings中调用保存函数

代码语言:javascript
复制
My.Settings.Save()

您应该在update设置函数的末尾添加此设置。这将为下一次会话保存所有设置。

下面是一个UpdateSettings函数的示例:

代码语言:javascript
复制
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
票数 6
EN

Stack Overflow用户

发布于 2013-11-04 21:48:25

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

把你的潜艇换成这个:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18984391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档