CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

怎样保存控件的属性值.

楼主All_Heart(问个底儿掉)2005-09-20 20:14:18 在 VB / 基础类 提问

我是一个新手,在构建一个程序的时候常常遇到这样的问题,一个控件的属性值运行过程中被改变了,但下次运行时,又是设计时的初始值.拿一个比较常用的控件Checkbox来说吧.当我在程序运行时,将checkbox的value属性值设置为1,但当下次运行时,又变回0.(设计时为0)  
          请问各位,怎么样才能使它的属性值能在运行时改变,而且能在下次运行时,还保持上次更改后的值呢? 问题点数:50、回复次数:11Top

1 楼bluesky23(乐天_正在开发右半脑。。。^_^)回复于 2005-09-20 20:31:51 得分 0

需要写注册表。  
  不过哲中一下感觉还是在程序中写代码控制来得方便。Top

2 楼All_Heart(问个底儿掉)回复于 2005-09-20 20:37:47 得分 0

能否说的具体一点啊.Top

3 楼szjhxu(天野)回复于 2005-09-20 20:58:37 得分 0

在你退出应用程序时,把要保存状态的控件的相关属性值存到文件中。下次打开时,再从文件里读出。Top

4 楼tutu83612(兔兔)回复于 2005-09-21 08:35:59 得分 20

写到注册表里是一个办法,不过你也可以把它存到一个INI文件里。把下面的代码放到一个模块里。  
  你可以按你的要求修改"setup.ini"为你要保存的ini文件名字。  
  然后,拿个例子说吧,Checkbox   在其事件click的时候,保存其属性值,  
  setinis("control","checkbox1",checkbox1.value)  
   
  而在checkbox所在的页面load的时候,读出它的值  
   
  getinis("control","checkbox1",0)  
   
  Private   Declare   Function   WritePrivateProfileString   Lib   "kernel32"   Alias   "WritePrivateProfileStringA"   (ByVal   lpApplicationName   As   String,   ByVal   lpKeyName   As   Any,   ByVal   lpString   As   Any,   ByVal   lpFileName   As   String)   As   Long  
  Private   Declare   Function   WritePrivateProfileSection   Lib   "kernel32"   Alias   "WritePrivateProfileSectionA"   (ByVal   lpAppName   As   String,   ByVal   lpString   As   String,   ByVal   lpFileName   As   String)   As   Long  
  Private   Declare   Function   GetPrivateProfileSection   Lib   "kernel32"   Alias   "GetPrivateProfileSectionA"   (ByVal   lpAppName   As   String,   ByVal   lpReturnedString   As   String,   ByVal   nSize   As   Long,   ByVal   lpFileName   As   String)   As   Long  
  Private   Declare   Function   GetPrivateProfileString   Lib   "kernel32"   Alias   "GetPrivateProfileStringA"   (ByVal   lpApplicationName   As   String,   ByVal   lpKeyName   As   Any,   ByVal   lpDefault   As   String,   ByVal   lpReturnedString   As   String,   ByVal   nSize   As   Long,   ByVal   lpFileName   As   String)   As   Long  
  Public   Function   GetIniS(ByVal   SectionName   As   String,   ByVal   keyWord   As   String,   ByVal   DefString   As   String)   As   String  
          Dim   ResultString   As   String   *   144,   temp   As   Integer  
          Dim   s   As   String,   i   As   Integer  
          temp%   =   GetPrivateProfileString(SectionName,   keyWord,   "",   ResultString,   144,   App.Path   &   "\setup.ini")  
  '‘检索关键词的值  
  If   temp%   >   0   Then   '‘关键词的值不为空  
          s   =   ""  
          For   i   =   1   To   144  
                  If   Asc(Mid$(ResultString,   i,   1))   =   0   Then  
                          Exit   For  
                  Else  
                          s   =   s   &   Mid$(ResultString,   i,   1)  
                  End   If  
          Next  
  Else  
          temp%   =   WritePrivateProfileString(SectionName,   keyWord,   DefString,   App.Path   &   "\setup.ini")  
          '‘将缺省值写入INI文件  
          s   =   DefString  
  End   If  
  GetIniS   =   s  
  End   Function  
   
  Public   Function   SetIniS(ByVal   SectionName   As   String,   ByVal   keyWord   As   String,   ByVal   ValStr   As   String)  
  Dim   res%  
  res%   =   WritePrivateProfileString(SectionName,   keyWord,   ValStr,   App.Path   &   "\setup.ini")  
  End   Function  
   
  Top

5 楼of123()回复于 2005-09-21 08:43:07 得分 0

实际上就是保存到你能读写的文件中。无论注册表、INI文件、数据库还是TXT文件,什么都行。  
  退出时保存控件值,启动时读出并赋值。Top

6 楼domhuang(不名)回复于 2005-09-21 08:45:55 得分 0

退出的时候保存     开始运行的时候载入Top

7 楼xxw19820907(文)回复于 2005-09-21 09:33:08 得分 0

实际上就是保存到你能读写的文件中。无论注册表、INI文件、数据库还是TXT文件,什么都行。  
  退出时保存控件值,启动时读出并赋值。  
  Top

8 楼faysky2(出来混,迟早是要还嘀)回复于 2005-09-21 09:39:01 得分 30

你在form上放一个CheckBox     加上下面的代码试试:  
  Option   Explicit  
  Private   Sub   Form_Load()  
        Check1.Value   =   GetSetting("myapp",   "Startup",   "Check",   0)  
        DeleteSetting   "MyApp",   "Startup"        
  End   Sub  
  Private   Sub   Form_Unload(Cancel   As   Integer)  
            SaveSetting   "MyApp",   "Startup",   "Check",   Check1.Value  
  End   SubTop

9 楼jxgzay(jxgzay)回复于 2005-09-21 10:31:31 得分 0

将属性值写入文件或数据库,加载时读入并赋值给属性。Top

10 楼wjtgatow(问个底儿掉)回复于 2005-09-22 18:44:09 得分 0

faysky2的方法挺方便的.Top

11 楼All_Heart(问个底儿掉)回复于 2005-09-24 20:04:13 得分 0

不好意思,我好久没有来了,我还想问一下,faysky2的方法"savesetting"的值保存在什么地方呀   ?为什么第一次运行时,"deltetsetting"出错呢?Top

相关问题

  • 关于Delphi中制作ActiveX的问题——如何保存控件属性值?
  • 把控件设置好的属性及值保存在数据库中
  • 如何保存AdoConnection控件的connectionstring 属性?
  • Web控件编辑属性保存问题!
  • 怎样在程序退出后保存控件属性?
  • 无法更改控件属性值
  • 做ActiveX控件时,如何把属性保存在Object inspector中?我的目的是让用户用我的控件时,设置的属性值在关闭工程后能保存下来,这样在下
  • 怎样设计属性值为数组的控件的属性
  • 我想写一段能够读取并保存任意控件的所有可写属性值,请问高手如何能办到?
  • 一个保存自定义控件属性的问题,高手们请帮忙

关键词

  • 属性
  • 控件
  • 文件
  • 代码
  • 数据库
  • check
  • 保存
  • 属性值
  • 运行
  • 赋值

得分解答快速导航

  • 帖主:All_Heart
  • tutu83612
  • faysky2

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo