vb.net多事件的简单介绍( 三 )


当 TabStop 属性更改时发生 。
TextChanged
在 Text 属性值更改时发生 。(从 Control 继承 。)
Validated
在控件完成验证时发生 。(从 Control 继承 。)
Validating
在控件验证时发生 。(从 Control 继承 。)
VisibleChanged
在 Visible 属性值更改时发生 。(从 Control 继承 。)
(vb.net)动态添加的控件如何多次响应事件?熟悉VB的朋友对使用ActiveX控件一定不会陌生vb.net多事件,众多控件极大地方便vb.net多事件了编程 , 但
唯一的缺陷是不能动态加载控件,必须在设计时通过引用,将控件放置在窗体上 。
VB6.0已能够解决该问题,只是帮助中没有明确说明,并且没有描述到一些关键功能,
由于以前的版本中可以动态创建进程外服务vb.net多事件:如果对象是外部可创建的 , 可在Set语
句中用New关键字、CreateObject或GetObject从部件外面将对象引用赋予变量 。
如果对象是从属对象,则需使用高层对象的方法,在Set语句中指定一个对象引用:
DimxlApp1AsExcel.Application
SetxlApp1=NewExcel.Application

DimxlAppAsObject'定义存放引用对象的变量 。
SetxlApp=CreateObject("excel.application")
xlApp.Visible=True
----这些语法很容易造成误导,以为动态加载ActiveX控件也是此方法,可能有朋友也
象vb.net多事件我一样利用CreateObject尝试了无数次,却无功而返 , 不知微软公司是出于何种考
虑 , 动态加载ActiveX控件是扩展控件集合的方式实现,通过实际摸索,终于就如何实
现动态ActiveX控件找出了一条切实可行的方法,下面以一个具体的实例来详细说明 。
一、ActiveX控件
----ActiveX控件是VisualBasic工具箱的扩充部分 。使用ActiveX控件的方法与
使用其它标准内装的控件,如CheckBox控件,完全一样 。在程序中加入ActiveX控
件后,它将成为开发和运行环境的一部分 , 并为应用程序提供新的功能 。
----ActiveX部件通过客户端/服务器关系与应用程序—及与部件相互之间—交互作
用 。客户端是使用部件功能的应用程序代码或部件 。服务器是部件及其关联的对象 。例
如,假设应用程序使用ActiveX控件来提供一个标准的雇员窗体,供公司的多种应用
程序使用 。提供雇员窗体的ActiveX控件就是服务器,使用这个控件的应用程序就是
服务器的客户端 。
二、加载方法
----VB6.0中对Controls集合进行了扩展,以前版本中Controls集合在窗体上列举出
已加载的控件,这在迭代过程中是很有用的 。Controls集合标识一个叫做Controls
的内在窗体级变量 。如果忽略可选的object所在处的整数,则关键字Controls必须
包括在内 。我们通常在窗口中使用如下代码:
Text1.Text="Hello,world"
其实也可以使用如下代码达到同一目的:
Controls(1).Text="Hello,world"
----在VB6.0中除了原来的Clear、Remove方法外(很奇怪,为什么微软在VB5.0中只提
供这两种方法,而没有提供Add方法,因为没有Add,这两种方法也就没什么用处),增
加了Add方法 , 该方法就是用于动态加载控件的:
Controls.Add(progidasString,NameasString);
progid:ActiveX部件的ProgID,如:"VB.CheckBox";
Name:ActiveX部件加载后的名称,如:"MyCheckBox";
若要在窗体上添加一个名为MyButton的按钮,可以使用:
dimoControlasObject'窗体级变量
注意:这里声明为Object对象类型
PrivateSubLoadControl()
SetoControl=Controls.Add
("VB.CommandButton","MyButton")
oControl.Left=10

推荐阅读