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

谈谈关于动态创建控件?

楼主shixiangming(史先敏)2003-06-03 23:58:10 在 VB / 基础类 提问

如果要在Form上动态的创建一个控件(文本等),应该怎么创建?  
  如果有好的方法可以谈谈? 问题点数:0、回复次数:4Top

1 楼anis0444()回复于 2003-06-04 00:11:43 得分 0

看MSDN,索引-》输入“动态”即可。Top

2 楼wingchi(期待第十五个五年计划)回复于 2003-06-04 07:56:07 得分 0

Option   Explicit  
  Private   WithEvents   btnObj   As   CommandButton  
   
  Private   Sub   btnObj_Click()  
        MsgBox   "This   is   a   dynamically   added   button."  
  End   Sub  
   
  Private   Sub   Form_Load()  
        Set   btnObj   =   Controls.Add("VB.CommandButton",   "btnObj")  
        With   btnObj  
              .Visible   =   True  
              .Width   =   2000  
              .Caption   =   "Hello"  
              .Top   =   1000  
              .Left   =   1000  
        End   With  
  End   Sub  
  Top

3 楼lihonggen0(李洪根,MS MVP,标准答案来了)回复于 2003-06-04 08:36:19 得分 0

在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   Then  
  For   i   =   1   To   Form1.Controls.Count  
  Controls.Remove   0  
  Next   i  
  End   If  
  End   Sub  
  Private   Sub   ctlCommand_Click()  
  ctlText.Text   =   "你点击的是控制按钮"  
  End   Sub  
  Private   Sub   ctlDynamic_ObjectEvent(Info   As   EventInfo)  
  '当点击树形控件的某一个条目后,在ctlText中显示条目。  
  If   Info.Name   =   "Click"   Then  
  ctlText.Text   =   "你点击的条目是   "   &   _  
  ctlDynamic.object.selecteditem.Text  
  End   If  
  End   Sub  
  Private   Sub   Form_Load()  
  Dim   i   As   Integer  
  '   将树形控件的许可证信息加入到许可证集合中  
  '   如果许可证已经存在,则会返回错误信息732  
  Licenses.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   10  
  ctlDynamic.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  
  '加入一个TextBox  
  Set   ctlText   =   Controls.Add("VB.TextBox",   "ctlText1",   Form1)  
  '设置TextBox的位置和尺寸  
  ctlText.Move   (ctlDynamic.Left   +   ctlDynamic.Width   +   50),   _  
  1,   2500,   100  
  '将textBox的背景色设置为蓝色并将前景色设置为白色  
  ctlText.BackColor   =   vbBlue  
  ctlText.ForeColor   =   vbWhite  
  '使TextBox可见  
  ctlText.Visible   =   True  
  '加入一个CommandButton  
  Set   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,   500  
  ctlCommandDel.Caption   =   "删除所有控件"  
  ctlCommandDel.Visible   =   True  
  End   Sub  
  运行上面的程序,可以看到程序在窗口中加入了三个VB标准控件:一个TextBox和两个  
  CommandButton还加入了一个扩展的ActiveX控件:树形控件。这些控件还可以响应消息,  
  点击树形控件中的项目或者“点击”按钮就可以在文本框中显示相应的内容。点击“删除  
  所有控件”按钮就可以删除加入的所有控件了。  
  通过上面的程序可以看到,通过WithEvents可以定义带事件相应的控件,对于标准的VB  
  控件(例如CommandButton、TextBox等)可以通过VB.XXX来定义,其中XXX是控件的类的名称  
  ,而对于扩展的ActiveX控件,可以通过VBControlExtender来定义,在装载扩展控件以前,  
  首先要使用Licenses对象加入控件的许可证信息。  
  上面的程序在VB6,WIN98中文版下运行通过。  
  Top

4 楼lihonggen0(李洪根,MS MVP,标准答案来了)回复于 2003-06-04 08:46:53 得分 0

'先有form1上加一个text1   (0)  
   
  Private   Sub   Form_Load()  
          For   i   =   1   To   10  
                  Load   Text1(i)  
                  Text1(i).Top   =   400   *   i   +   200  
                  Text1(i).Left   =   20  
                  Text1(i).Visible   =   True  
          Next  
  End   SubTop

相关问题

  • 动态创建控件
  • 动态创建控件?
  • 动态创建控件
  • 动态创建控件问题?
  • ***关于动态创建控件***
  • 关于动态创建控件
  • vb能否动态创建控件?
  • vb如何动态创建控件?
  • 动态创建控件问题
  • 关于动态创建控件

关键词

  • 控件
  • vb
  • 许可证
  • ctldynam
  • ctltext
  • 树形
  • btnobj
  • withevents
  • 删除
  • subprivate

得分解答快速导航

  • 帖主:shixiangming

相关链接

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

广告也精彩

反馈

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