CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  API

关于VB的动态生成控件

楼主qianlinsong(坦白痞子)2002-11-07 23:24:51 在 VB / API 提问

我想做一个由用户输入行数和列数,然后就生成相应的控件(IMAGE),每个都有相同的数据和函数,运行期生成。我用了NEW,出错!CreateObject,出错!controls.add,能生成控件,但是我编的事件就拜拜了。  
  其实就像是扫雷游戏,里面放地雷的按钮几百个,不可能是一个一个的做吧?  
  问题点数:100、回复次数:5Top

1 楼tangolibra(tango)回复于 2002-11-08 00:07:07 得分 50

数组控件知道否?  
   
  参考一下MSDN  
   
  使用控件数组  
   
   
  控件数组是一组具有共同名称和类型的控件。它们的事件过程也相同。一个控件数组至少应有一个元素,元素数目可在系统资源和内存允许的范围内增加;数组的大小也取决于每个控件所需的内存和   Windows   资源。在控件数组中可用到的最大索引值为   32767。同一控件数组中的元素有自己的属性设置值。常见的控件数组的用处包括实现菜单控件和选项按钮分组。  
   
  注意       Visual   Basic   包括了在运行时动态地将未引用的控件添加到   Controls   集合中的能力。本主题仅指在设计时通过将一个控件剪切和粘贴到窗体上添加的引用控件。有关在运行时添加控件的详细信息,请参阅参考主题“Add   方法(Controls   集合)”和“Add   方法(Licenses   集合)”。  
   
  为何使用控件数组  
  在设计时,使用控件数组添加控件所消耗的资源比直接向窗体添加多个相同类型的控件消耗的资源要少。当希望若干控件共享代码时,控件数组也很有用。例如,如果创建了一个包含三个选项按钮的控件数组,则无论单击哪个按钮时都将执行相同的代码。  
   
  若要在运行时创建一个控件的新实例,则新控件必须是控件数组的成员。使用控件数组时,每个新成员继承数组的公共事件过程。  
   
  使用控件数组机制是不可能在运行时创建新控件的,因为每个新控件都继承为数组编写好的事件过程。例如,如果窗体上有若干文本框,而且每个文本框都接受一个日期数值,则可创建一个控件数组,使所有文本框共享同一个合法性检查代码。  
   
  示例应用程序:Calc.vbp  
  图   7.3   所示的   Calculator   示例应用程序(列在   Samples   目录中)包含两个控件数组─   数字按钮和操作按钮。  
   
  图   7.2       控件数组示例  
   
   
   
  下表列出   Calculator   示例中控件数组的   Name   和   Index   属性值。  
   
  数字   (n)   操作符   (n)    
  0   =   Number(0)   +   =   Operator(1)    
  1   =   Number(1)   –   =   Operator(2)    
  2   =   Number(2)   X   =   Operator(3)    
  3   =   Number(3)   /   =   Operator(4)    
  4   =   Number(4)   =   =   Operator(5)    
  5   =   Number(5)        
  6   =   Number(6)        
  7   =   Number(7)        
  8   =   Number(8)        
  9   =   Number(9)        
   
   
  请注意示例是如何使用   object(index)   语法引用每个控件的。在创建控件时指定索引值。实际上,在设计时为一个控件指定任意的索引,这将使控件成为数组的一部分。  
   
  Index   属性区分控件数组中的元素。当数组中的一个控件识别了一个事件时,Visual   Basic   将调用公共事件过程并传递一个参数(Index   属性的值),分辨是哪个控件识别事件。  
   
  例如,Number_Click   事件过程的第一行代码是这样的:  
   
  Private   Sub   Number_Click   (Index   As   Integer)  
   
  如果   Number(0)   识别事件,则   Visual   Basic   将   0   作为   index   参数传递,而如果   Number(1)   识别事件,则   Visual   Basic   将   1   作为   index   参数传递。与索引值不同,对于   Number(0)   到   Number(9)   已执行的其余   Number_Click   代码都是相同的。  
  Top

2 楼tangolibra(tango)回复于 2002-11-08 00:10:16 得分 50

运行时添加控件数组  
   
   
  在运行时,可用   Load   和   Unload   语句添加和删除控件数组中的控件,然而,添加的控件必须是现有控件数组的元素。必须在设计时创建一个(在大多数情况下)Index   属性为   0   的控件,然后在运行时使用如下语法:  
   
  Load   object(index%)  
   
  Unload   object(index%)  
   
  参数   描述    
  object   在控件数组中添加或删除的控件名称。    
  index%   控件在数组中的索引值。    
   
   
  加载控件数组的新元素时,大多数属性设置值将由数组中具有最小下标的现有元素复制─   本例中是索引值为   0   的元素。因为不会自动把   Visible、Index   和   TabIndex   属性设置值复制到控件数组的新元素中,所以,为了使新添加的控件可见,必须将其   Visible   属性设置为   True。  
   
  注意   试图对数组中已存在的索引值使用   Load   语句时,Visual   Basic   将生成一个错误。  
   
  重点   可用   Unload   语句删除所有由   Load   语句创建的控件,然而,Unload   无法删除设计时创建的控件,无论它们是否是控件数组的一部分。  
  Top

3 楼qianlinsong(坦白痞子)回复于 2002-11-08 18:13:36 得分 0

tangolibra(tango)   大哥!谢谢你!我按你的方法试过了,可以实现!!!  
  我给你加分,尽管你粘贴了MSDN!^_^Top

4 楼qianlinsong(坦白痞子)回复于 2002-11-08 18:14:06 得分 0

再给你100  
  Top

5 楼tangolibra(tango)回复于 2002-11-09 22:16:15 得分 0

互相帮助!Top

相关问题

  • vb中动态生成控件的问题!
  • VB中动态生成控件(文本框)
  • 动态生成控件的事件如何响应呢?VB的
  • 推荐一下vb动态生成表格控件
  • 怎么在vb中动态生成数组控件啊
  • 在VB中如何动态的去生成一个Label控件呢?
  • 如何动态生成控件实例?
  • TreeView和动态生成控件
  • 有关动态生成控件数组
  • 请问怎样动态生成控件

关键词

  • 控件
  • 属性
  • 语句
  • 代码
  • 数组
  • 添加
  • 示例
  • 元素
  • 运行
  • 按钮

得分解答快速导航

  • 帖主:qianlinsong
  • tangolibra
  • tangolibra

相关链接

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

广告也精彩

反馈

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