【问题标题】:Is there any way to save the checkbox's state of a program made in visual basic 6.0有什么方法可以保存在 Visual Basic 6.0 中制作的程序的复选框状态
【发布时间】:2019-12-16 16:28:50
【问题描述】:

我在 Visual Basic 6.0 中制作(设计)了一个程序,它由大约 100 个复选框组成,该程序不需要任何代码,只是一个是/否复选框类型的程序,但我想保存复选框状态,以便如果复选框处于“是”状态,则在重新启动程序后,它的状态将保持不变。 我读过关于 My.Settings.Save 但我不知道如何使用它,我使用的是 Visual Basic 6.0。

【问题讨论】:

    标签: visual-studio vba6


    【解决方案1】:

    在注册表中创建键,将每个复选框的值保存在其复选框更改事件中,并以初始化事件代码的形式加载每个复选框的状态。

    Option Explicit
    
    Private Const MyApp As String = "My Own App" 'put here your application name
    Private Const Sett As String = "Settings"
    
    Private Sub CheckBox1_Change()
        Dim chkBoxStatus As String
        chkBoxStatus = "CheckBox1"
        If Me.CheckBox1.value = True Then
            SaveSetting MyApp, Sett, chkBoxStatus, CStr(True)
        Else
            SaveSetting MyApp, Sett, chkBoxStatus, CStr(False)
        End If
    End Sub
    

    对所有复选框执行相同操作。 然后:

    Private Sub UserForm_Initialize() 'I do not remember well if VB6 uses Form_Initialize... You must adapt it accordingly.
      Dim regValue As String
      regValue = GetSetting(MyApp, Sett, "CheckBox1", "No value")
      If regValue <> "No value" Then Me.CheckBox1.value = CBool(regValue)
        'do the same for all checkboxes in discussion
        '.
        '.
    End Sub
    

    "No value" 如果没有在注册表中设置值则返回(还)...

    【讨论】:

    • 它不工作,这是程序的完整代码: Option Explicit Private Const MyApp As String = "Medicine" Private Const Sett As String = "Settings" Private Sub Check1_Click() Dim chkBoxStatus As String chkBoxStatus = "Check1" If Me.Check1.Value = True Then SaveSetting MyApp, Sett, chkBoxStatus, CStr(True) Else SaveSetting MyApp, Sett, chkBoxStatus, CStr(False) End If End Sub .....Continued(1 )
    • Private Sub Form_Initialize() Dim regValue As String regValue = GetSetting(MyApp, Sett, "Check1", "No value") If regValue "No value" Then Me.Check1.Value = CBool (regValue) End Sub Private Sub Form_Load() Dim regValue As String regValue = GetSetting(MyApp, Sett, "Check1", "No value") If regValue "No value" Then Me.Check1.Value = CBool​​(regValue) End Sub -----------------END--------------
    • @Rahul Sharma:无需在 Form_Load() 事件中放入相同的代码!如果您不喜欢 Initialize 事件,请在 Load 事件中执行,但不要两次。
    • @Rahul Sharma:恐怕你不理解代码。您必须使用Check1_Change event,而不是Click 事件...
    • @Rahul Sharma:每次更改复选框值时,都会将其存储在注册表中,并在您重新加载表单时将其取回。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-22
    • 2020-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多