小弟的窗体上有一个按钮command1_click()
还有20个textbox,分别是text1.text--text20.text现在我需要在这20个textbox中输入数字,然后点击command按钮,就可以自动保存这20个参数。哪位大大能帮忙给出详细代码?欢迎各位不吝赐教

解决方案 »

  1.   

    请问,能给出详细代码么??上次我问有人说用savesetting,不过我不太明白,你能帮帮忙么?
      

  2.   

    同上,把控件做成数组,用For 循环来做
      

  3.   

    GetSetting和SaveSetting参考(或者去看MSDN):'读取注册表的值,并删除注册表里的项目
    Private Sub Form_Load()
        Check1.Value = GetSetting("AppCheck", "Check", "CheckValue")
        Text1.Text = GetSetting("AppText", "Text", "TextValue")
        DeleteSetting "AppCheck", "Check", "CheckValue"
        DeleteSetting "AppText", "Text", "TextValue"
    End Sub'保存设置值到注册表
    Private Sub Form_Unload(Cancel As Integer)
        SaveSetting "AppCheck", "Check", "CheckValue", Check1.Value
        SaveSetting "AppText", "Text", "TextValue", Text1.Text
    End Sub
      

  4.   

    faysky2() 感谢你的回帖,不过我对每个参数的意思都不太明白,结合我的这个窗体,你能帮我写一个例子么?
      

  5.   

    MSDN:GetSetting 函数
          从 Windows 注册表中的应用程序项目返回注册表项设置值。语法GetSetting(appname, section, key[, default])GetSetting 函数的语法具有下列命名参数:部分 描述 appname 必要。字符串表达式,包含应用程序或工程的名称,要求这些应用程序或工程有注册表项设置。 
    section 必要。字符串表达式,包含区域名称,要求该区域有注册表项设置。 
    key 必要。字符串表达式,返回注册表项设置的名称。 
    default 可选。表达式,如果注册表项设置中没有设置值,则返回缺省值。如果省略,则 default 取值为长度为零的字符串 ("")。 
    说明如果 GetSetting 的参数中的任何一项都不存在,则 GetSetting 返回 default 的值。=============================================================================SaveSetting 语句
          在 Windows 注册表中保存或建立应用程序项目。语法SaveSetting appname, section, key, settingSaveSetting 语句的语法具有下列命名参数:部分 描述 appname 必要。字符串表达式,包含应用程序或工程的名称,对这些应用程序或工程使用设置 
    section 必要。字符串表达式,包含区域名称,在该区域保存注册表项设置。 
    key 必要。字符串表达式,包含将要保存的注册表项设置的名称。 
    setting 必要。表达式,包含 key 的设置值。 
    说明如果无论如何也不能保存注册表项设置,则将导致错误发生。
      

  6.   

    那么是不是说我的key 和 setting 要有20个?如果是的话,那么有没有一个效率更高的办法?
      

  7.   

    给个一般做法,打开窗体读保存的文本文件,将里面的数据分配给你的text,点保存对文本文件更新就可以,代码自己去写,因为当你知道怎么操作文本文件后非常简单的
      

  8.   

    那么是不是说我的key 和 setting 要有20个?
    ----------------------------------------------
    是的
    如果是的话,那么有没有一个效率更高的办法?
    -------------------------------------------
    同楼上,如果数据不是很重要的话,建议保存到文本文件
      

  9.   

    好事做到底吧,给你个写文件的涵数,这是写单个到文件的东西,你自己改下
    '写文件操作
    Public Function WriteFile(strWhat As String, strFilePath As String, strFileName As String) As Boolean
    WriteFile = False
         
         On Error GoTo ErrorHandl
         
         Dim txtFile As String
         Dim intFlag As Integer
         
         txtFile = strFilePath & strFileName
         intFlag = 8
         
         If fso.FileExists(txtFile) = False Then
            fso.CreateTextFile txtFile, True
            intFlag = 2
         End If
         Set fFile = fso.GetFile(txtFile)
         
         Set ts = fFile.OpenAsTextStream(intFlag, -2)
         ts.WriteLine (strWhat)
         ts.Close
         WriteFile = True
        Exit Function
    ErrorHandl:
    End Function
      

  10.   

    失败,居然忘了给定义了,最恨犯这种错误了
    Dim fso As New FileSystemObject
    Dim fFile As File
    Dim ts As TextStream
      

  11.   

    Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As Any, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
         
    Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As LongDeclare Function WritePrivateProfileSection Lib "kernel32" Alias "WritePrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpString As Any, ByVal lpFileName As String) As Long
    Declare Function WriteProfileString Lib "kernel32" Alias "WriteProfileStringA" (ByVal lpszSection As String, ByVal lpszKeyName As String, ByVal lpszString As String) As LongDeclare Function WritePrivateProfileString_A Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
    '读取.ini文件的某个键值
    Public Function ReadFile_To_ini(appName As String, KeyName As String, filename As String) As String
        Dim s As String * 256
        On Error GoTo ErrorHandl
        GetPrivateProfileString appName, KeyName, "", s, 256, filename
        ReadFile_To_ini = s
        Exit Function
    ErrorHandl:
    End Function'写.ini文件
    Public Function WriteFile_To_ini(appName As String, KeyName As String, AddString As String, filename As String) As Boolean
        WriteFile_To_ini = False
        On Error GoTo 0
        WritePrivateProfileString_A appName, KeyName, AddString, filename
        WriteFile_To_ini = True
    End Function'删除.ini文件中的某部分
    Public Function DeleteFile_To_ini(appName As String, KeyName As String, filename As String) As Boolean
        DeleteFile_To_ini = False
        On Error GoTo ErrorHandl
        WritePrivateProfileString appName, KeyName, 0&, filename
        DeleteFile_To_ini = True
        Exit Function
    ErrorHandl:
    End Function'删除.ini文件中主键部分
    Public Function DeleteFile_To_iniKey(appName As String, filename As String) As Boolean
        DeleteFile_To_iniKey = False
        On Error GoTo ErrorHandl
        WritePrivateProfileSection appName, 0&, filename
        DeleteFile_To_iniKey = True
        Exit Function
    ErrorHandl:
    End Function'在.ini文件中,根据某个键值,删除此键所在的项的所有键值
    Public Function Delete_AllKeyValue_iniKey(KeyValue As String, filename As String) As Boolean
        Dim temp As Integer
        Dim tar As String
        Dim appName() As String
        Dim key_Name() As String
        Dim varString As String
        Dim i As Integer
        Dim j As Integer
        Dim tempVar As String
        Dim tempArray() As String
        Dim str As String    Delete_AllKeyValue_iniKey = False
        
        appName = ReadAllFile_To_iniApp(filename)
        
        '根据键值找到项值
        For i = LBound(appName) To UBound(appName) - 2
            key_Name = ReadAllFile_To_iniKey(appName(i), filename)
            For j = LBound(key_Name) To UBound(key_Name) - 2
                varString = objStr.My_RightTrim(ReadFile_To_ini(appName(i), key_Name(j), filename))
                
                If KeyValue = varString Then
                    str = appName(i)    '项值已经找到
                    Exit For
                End If
            Next
        Next
        
        If DeleteFile_To_iniKey(str, filename) Then Delete_AllKeyValue_iniKey = True
        
    End Function用api更简单了
      

  12.   

    那么保存到文本文件的话怎么做呢?
    -----------------------------------
    用Open语句来做就够了:
    Private Sub Command1_Click()
        Open App.Path & "\test.txt" For OutPut As #1
        Write #1,Text1.Text
        Close #1
    End Sub
      

  13.   

    用Open语句来做就够了:
    Private Sub Command1_Click()
        Open App.Path & "\test.txt" For OutPut As #1
        Write #1,Text1.Text
        Close #1
    End Sub--------------------------------系统说实时错误424。。
      

  14.   

    系统说实时错误424。。
    ---------------------------
    缺少对象,你的窗体上没有Text1控件吧?
    上面的代码 是把Text的内容写到 当前目录下的test.txt文件里
      

  15.   

    缺少对象,你的窗体上没有Text1控件吧?
    上面的代码 是把Text的内容写到 当前目录下的test.txt文件里
    -------------------请问怎么添加?text1.text我的窗体上有啊。要新建一个text.txt文件么?
      

  16.   

    faysky2()我弄了一下,现在可以执行了但是还有一个问题,就是我需要点一下command,把这个text的内容进行保存,然后下次打开的时候,text里面要显示我上次输入的数字,并且能够在其他窗体中调用。现在看还不能做到这点阿~
      

  17.   

    text1.text我的窗体上有啊。要新建一个text.txt文件么?
    -----------------------------------
    不是的,你的Text1控件是不是做成了数组呀。
    如果你的Text1控件是数组的话(也就是它的Index属性不为空,而是一个数字),请把上面的代码改为这样:Private Sub Command1_Click()
        Dim i%
        Open App.Path & "\test.txt" For OutPut As #1
        For i=0 to Text1.Count-1
            Write #1,Text1(i).Text '把控件数组的内容写入文件里
        Next
        Close #1
    End Sub
      

  18.   

    不是的,你的Text1控件是不是做成了数组呀。
    如果你的Text1控件是数组的话(也就是它的Index属性不为空,而是一个数字),请把上面的代码改为这样:Private Sub Command1_Click()
        Dim i%
        Open App.Path & "\test.txt" For OutPut As #1
        For i=0 to Text1.Count-1
            Write #1,Text1(i).Text '把控件数组的内容写入文件里
        Next
        Close #1
    End Sub=========================不是数组,麻烦你看看我上面说的问题怎么解决?这么做每次只能保存一个数字在test.txt里面,而且下一次打开的时候还要重新输入参数
      

  19.   

    这么做每次只能保存一个数字在test.txt里面,而且下一次打开的时候还要重新输入参数
    ------------------------------------------
    做成控件数组,代码会少写一些
    做控件数组方法:[1]把那20个控件的都改为一样的名称,把它们的Index属性改为从0到19
    或[2]把那些Text控件都删掉,只保留一个,然后复制它,再粘贴到窗体上,它会有 是否创建 控件数组的提示,选择是,然后继续粘贴,知道够了20个写入数据:Private Sub Command1_Click()
        Dim i%, strTmp As String
        For i = Text1.LBound To Text1.UBound
            strTmp = strTmp & Text1(i).Text & ","
        Next
        strTmp = Left(Trim(strTmp), Len(Trim(strTmp)) - 1)
        Open App.Path & "\test.txt" For Output As #1
            Print #1, strTmp  '把控件数组的内容写入文件里
        Close #1
    End Sub读取数据:Private Sub Form_Load()
        Dim i%, strTmp As String, strArr() As String
        Open App.Path & "\test.txt" For Binary As #1
        strTmp = Space(LOF(1))
        Get #1, 1, strTmp
        Close #1
        strArr = Split(strTmp, ",")
        For i = LBound(strArr) To UBound(strArr)
            Text1(i).Text = strArr(i)
        Next
    End Sub
      

  20.   

    谢谢,faysky2()可以用了还有一个小问题,就是我如果需要在别的计算中调用这20个参数进行计算。请问该如何调用呢?另外一个窗体也有一个text1.text了。
      

  21.   

    直接引用那个窗体的控件就行了:比如,你在Form2里需要用到Form1的Text1(0)的内容:
    Form2里:
    Private Sub Command1_Click()
        MsgBox Form1!Text1(0).Text  
    End Sub