vb.net datetimepicker没有从my.setting获取值

时间:2017-07-18 15:33:31

标签: vb.net visual-studio-2017

我有这段代码来保存datetimepicker1的价值:

Private Sub DateTimePicker1_Validating(sender As Object, e As EventArgs) _
     Handles DateTimePicker1.Validating
                        My.Settings.dt1value= DateTimePicker1.Value.ToString
                        MsgBox("before save")
                        My.Settings.Save()
                        MsgBox("after save")
End Sub

它看起来可以节省My.Settings(来自消息框1,2)

的价值

然后关闭应用程序并再次运行它;它没有将My.Settings.dt1value加载到DateTimePicker1

加载代码为:

Private Sub main_Shown(sender As Object, e As EventArgs) Handles Me.Shown
            DateTimePicker1.Value = Convert.ToDateTime(My.Settings.dt1value)
End Sub

Textbox1等其他控件正在保存并正确加载,但只有DateTimePicker无效。

我尝试从Handles Me.Shown更改为Handles Me.Load但问题相同。

我还有其他问题

当我在Windows中部署应用程序和设置时,My.Setting.Save()不适用于所有控件。

我读过其他类似的帖子并尝试关注它们,但没有任何帮助。

任何提示赞赏,

提前致谢。

1 个答案:

答案 0 :(得分:0)

首先检查值是否已保存。使用

MsgBox(My.Settings.dt1value)

而不是

MsgBox("after save").

这将确保保存该值。

  

MsgBox(“保存前”)& MsgBox(“保存后”)在这里没什么用处

但是从你的代码片段开始,似乎价值得到了保存。 在Load事件的形式中,编写下面提到的代码并检查输出:

string DatePattern = "dd/MM/yyyy HH:mm:ss"; 
DateTime ConvertedDateTime; 
DateTimePicker1.Value = DateTime.TryParseExact(My.Settings.dt1value, DatePattern , null, DateTimeStyles.None, out ConvertedDateTime))

编辑:关于你的第二个问题

这是因为每当您以任何方式更新或修改应用程序时,都会刷新My.Settings(内置设置文件)并生成一个新文件。我建议您将配置文件保存在单独的外部文件中。不在My.Settings