【问题标题】:vb.net datetimepicker not taking value from my.settingvb.net datetimepicker 没有从 my.setting 中获取价值
【发布时间】:2017-07-18 15:33:31
【问题描述】:

我有这个代码来保存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() 不适用于所有控件。

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

感谢任何提示,

提前致谢。

【问题讨论】:

  • 也许将您的设置类型更改为日期而不是字符串。然后保存My.Settings.dt1value = DatePicker1.Value
  • 谢谢@TheWhiteWolf,但这并没有解决问题。

标签: vb.net visual-studio-2017


【解决方案1】:

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

MsgBox(My.Settings.dt1value)

而不是

MsgBox("after save").

这将确保值得到保存。

MsgBox("before save") & MsgBox("after save") 在这里没什么用

但是从您的代码 sn-p 看来,该值似乎正在被保存。 在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(内置设置文件)都会被刷新并生成一个新的。我建议您将配置文件保存在单独的外部文件中。不在我的设置中

【讨论】:

  • 谢谢@nobody,问题出在意料之外。仍然面临第二个问题。
  • 那是因为每当您以任何方式updatemodify 应用程序时,My.Settings(内置设置文件)都会被刷新并生成一个新的。我建议您将配置文件保存在单独的外部文件中。不在My.Settings
  • 我已经更新了我的答案。单击左侧的勾号将其标记为答案:)
  • 谢谢@nobody,我根据您的回答stackoverflow.com/q/29634895/7735285 找到了这篇文章,确实解决了我的第二个问题,非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多