NumericUpDown.值未保存在“用户设置”中



我在窗体上有一个NumericUpDown控件。在应用程序设置/属性绑定中,对于value参数,我不能选择我的USER设置:Heures (Integer/USER)。

我试着用这种方式保存这个值:

 Private Sub NumericUpDownHeures_Leave(sender As System.Object, e As System.EventArgs) Handles NumericUpDownHeures.Leave
        My.Settings.Heures = NumericUpDownHeures.Value
        My.Settings.Save()
    End Sub

但它没有保存。其他设置(字符串/用户)没有问题。但是我不明白为什么设置(整数/用户)不保存

当你把"NumericUpDown1. "您必须将My.Settings.Heures处的值设置为十进制。

In Form1_Load add:

NumericUpDownHeures.Value = My.Settings.Heures

并添加到按钮或其他小部件的事件侦听器:

My.Settings.Heures = NumericUpDownHeures.Value

我猜问题是Leave事件没有像您期望的那样被触发,特别是如果用户只是单击向上/向下箭头。我怀疑它只有在用户实际单击值区域然后离开时才会触发。您可以通过调试来验证这一点,看看您的代码是否曾经被击中,或者通过显示来自该事件的简单提示框来验证。

我认为你会有更好的运气,如果你挂钩LostFocusValueChanged事件

我还想补充一点,以供将来看到这一点的人参考。

将您的设置保存为已经显示的设置My.Settings.Heures = NumericUpDownHeures.Value到你的valuechange事件中,然后在form load事件中做反向操作。

问题是,当您首次初始化时,此值更改事件在表单加载之前触发,因此它将继续默认为您在设计器中设置的任何值,因为您正在使用设计器值覆盖设置值。

为了解决这个问题,你需要一个私有/公共布尔值在你的代码的顶部,只有设置为真一旦你的表单已经加载(设置为真在你的form_load事件的底部),然后你可以添加条件valuechange事件检查表单是否已经加载。如果是,则更改设置值,如果不是,则不要。

一个例子:

Private IsFormLoaded As Boolean = False
    
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    NumericUpDown1.Value = My.Settings.SavedNumValue
    IsFormLoaded = True
End Sub
Private Sub NumericUpDown1_ValueChanged(sender As Object, e As EventArgs) Handles NumericUpDown1.ValueChanged
    If IsFormLoaded = False Then Exit Sub
    My.Settings.SavedNumValue = NumericUpDown1.Value
End Sub
OR
Private Sub NumericUpDown1_ValueChanged(sender As Object, e As EventArgs) Handles NumericUpDown1.ValueChanged
    If IsFormLoaded Then
        My.Settings.SavedNumValue = NumericUpDown1.Value
    End If
End Sub

相关内容

  • 没有找到相关文章

最新更新