赛迪网 > IT技术 编程语言 > 文章
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

在VB中动态添加可响应消息的控件

发布时间:2006.08.16 02:48     来源:plwww    作者:

在VB中动态添加可响应消息的控件 在VB编程中,经常要根据不同的情况在运行时向窗口中添加或者删除控件,而各个控件还要响应各种事件。在一般的情况下是首先在设计时将控件加入到窗口中,在它们的各个事件中写入代码,然后将它们的Visible属性设置为False。在运行时再使控件显示出来,但是这样既不方便同时也因为在设计时在窗口中加入太多的控件而使得程序的运行速度变慢。下面我向大家介绍一种通过编程在运行时动态添加和删除控件的方法 首先建立一个工程文件,然后在Form1中加入以下的代码: Dim WithEvents cmdMyCommand As VB.CommandButton Option Explicit '在下面的定义中,程序定义了一个TextBox控件、一个CommandButton控件 '和一个附加控件。 Dim WithEvents ctlDynamic As VBControlExtender Dim WithEvents ctlText As VB.TextBox Dim WithEvents ctlCommand As VB.CommandButton Dim WithEvents ctlCommandDel As VB.CommandButton Private Sub ctlCommandDel_Click()Dim i As Integer '将控件的许可证信息删除Licenses.Remove "MSComctlLib.TreeCtrl"If MsgBox("是否删除所有控件", vbYesNo) = vbYes ThenFor i = 1 To Form1.Controls.CountControls.Remove 0Next iEnd If End Sub Private Sub ctlCommand_Click()ctlText.Text = "你点击的是控制按钮" End Sub Private Sub ctlDynamic_ObjectEvent(Info As EventInfo)'当点击树形控件的某一个条目后,在ctlText中显示条目。If Info.Name = "Click" ThenctlText.Text = "你点击的条目是 " & _ctlDynamic.object.selecteditem.TextEnd If End Sub Private Sub Form_Load()Dim i As Integer' 将树形控件的许可证信息加入到许可证集合中' 如果许可证已经存在,则会返回错误信息732Licenses.Add "MSComctlLib.TreeCtrl"' 在Form中动态的加入一个树形控件,如果你想树形控件建立到不同的'容器中,象一个Frame控件或者PictureBox控件,你只要将Controls.Add'函数的第三个参数改为特定的容器名就可以了Set ctlDynamic = Controls.Add("MSComctlLib.TreeCtrl", _"myctl", Form1)'设置树形控件的位置和尺寸ctlDynamic.Move 1, 1, 2500, 3500'在树形控件中加入10个节点For i = 1 To 10ctlDynamic.object.nodes.Add Key:="Test" & Str(i), _Text:="Test" & Str(i)ctlDynamic.object.nodes.Add Relative:="Test" & Str(i), _Relationship:=4, Text:="TestChild" & Str(i)Next i'使树形控件可见ctlDynamic.Visible = True'加入一个TextBoxSet ctlText = Controls.Add("VB.TextBox", "ctlText1", Form1)'设置TextBox的位置和尺寸ctlText.Move (ctlDynamic.Left + ctlDynamic.Width + 50), _1, 2500, 100'将textBox的背景色设置为蓝色并将前景色设置为白色ctlText.BackColor = vbBluectlText.ForeColor = vbWhite'使TextBox可见ctlText.Visible = True'加入一个CommandButtonSet ctlCommand = Controls.Add("VB.CommandButton", _"ctlCommand1", Form1)'设置CommandButton的位置和尺寸ctlCommand.Move (ctlDynamic.Left + ctlDynamic.Width + 50), _ctlText.Height + 50, 1500, 500'设置CommandButton的标题ctlCommand.Caption = "点击"'使CommandButton可见ctlCommand.Visible = True '建立一个删除按钮Set ctlCommandDel = Controls.Add("VB.CommandButton", _"ctlCommand2", Form1)ctlCommandDel.Move (ctlDynamic.Left + ctlDynamic.Width + 50), _ctlText.Height + 650, 1500, 500ctlCommandDel.Caption = "删除所有控件"ctlCommandDel.Visible = True End Sub 运行上面的程序,可以看到程序在窗口中加入了三个VB标准控件:一个TextBox和两个CommandButton还加入了一个扩展的ActiveX控件:树形控件。这些控件还可以响应消息,点击树形控件中的项目或者“点击”按钮就可以在文本框中显示相应的内容。点击“删除所有控件”按钮就可以删除加入的所有控件了。 通过上面的程序可以看到,通过WithEvents可以定义带事件相应的控件,对于标准的VB控件(例如CommandButton、TextBox等)可以通过VB.XXX来定义,其中XXX是控件的类的名称,而对于扩展的ActiveX控件,可以通过VBControlExtender来定义,在装载扩展控件以前,首先要使用Licenses对象加入控件的许可证信息。 上面的程序在VB6,WIN98中文版下运行通过。http://www.applevb.com


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· VB6.0动态加载ActiveX控件漫谈 (03-19) · VBCOM TUTORIAL(3) (06-16)
· VBCOM TUTORIAL(1) (12-20) · VBCOM TUTORIAL(2) (10-11)
· VB6中一个非常好用的读写Ini文件的模块 (09-02) · 发现剪帖板的秘密 (03-06)
· 自己动手制作MUD客户端服务程序 (12-23) · 在 VB5.0中编辑数据库和电子表格 (05-13)
· VB应用程序对系统配置参数的确定 (11-15) · 利用VB访问Internet (10-16)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
[政务][电信][金融][农业][制造业][中小企业]
[CIO][ERP][协同][IT管理][中间件][电子商务]
[政策][地方][专家][评估][辞典][博客][社区]
· 专题:一路畅通构想曲——让出行不再遭遇堵车
· CIO工作亲历:企业ERP选型不能忽视"选人关"
· 综述:信息化建设给中国监狱带来的各种变化
· 金融业风险管理和法规遵从有五点需考虑的因素
· 保险业CIO关注:该如何建立统一高效的CRM体系
· 调查显示:多数CIO对IT规划仍存在困惑和误解
  博客·论坛 ·曾剑秋·项立刚·Java学习·网管