我有这段代码来保存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()
不适用于所有控件。
我读过其他类似的帖子并尝试关注它们,但没有任何帮助。
任何提示赞赏,
提前致谢。
答案 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