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


oControl.Top=10
oControl.Visible=True'使控件可见
EndSub
----这是VB6.0的标准语法,它在例程中也是如此演示的,不过该方法虽然现实了控件
的动态加载 , 按钮显示在窗体上,可以象普通按钮一样按下去,但加载的控件不能预先
设计响应事件代码 , 如:事件SubMyButton_Click()将是非法的,当然,可以将要响应
的事件封装在控件内部 。就编程的观点来看该方法没什么大的用处,开发ActiveX控件
的目的是为了资源共享,为了被其他开发人员利用,所以要提供必要的事件接口,显然
利用该方法不行,通过分析VBControls等相关对象,找出VBControlExtender对象与
EventInfo相结合能提供事件陷井捕捉,VBControlExtender对象对动态添加控件特别有
用 , 它提供了一套通用的属性、方法、事件给开发人员,它的一个突出特点是能编程设
计控件的事件 , 熟习类编程的朋友对带事件的对象声明一定不会陌生:
----DimWithEventsobjElemtasCElemtVBControlExtender也不例外 , 声明的语法
一样 , 只不过它有个特殊的事件ObjectEvent(InfoAsEventInfo) , 它能捕捉到对象使
用RaiseEvent产生的所有事件,EventInfo数据结构映射了事件的名称、参数个数和参
数的值 。VBControlExtender和EventInfo相结合,采用SelectCase就可以预先将不
同类对象的事件放置一起,各自独立运作 。将上面的代码改写一下就能提供Click事件
了:
----DimWithEventsoControlAsVBControlExtender'带事件声明声明之后您就可
以在代码窗口的左上角的对象下拉框中发现该对象出现了,也就是说,该对象有了事件
或方法了 , 它的事件有DragDrop , DragOver,LostFocus,GotFocus,ObjectEvent
和Validate,其中ObjectEvent是通用的事件捕捉 。
PrivateSubLoadControl()
SetoControl=Controls.Add
("VB.CommandButton","MyButton")
oControl.Visible=True
EndSub
PrivateSuboControl_ObjectEvent(InfoAsEventInfo)
SelectCaseInfo.Name
Case"Click"'Click事件
'您可以添加处理Click事件代码
MsgBox"您按了MyButton!"
CaseElse'其他事件
'Handleunknowneventshere.
EndSelect
EndSub
----当然对微软提供的标准控件能采用该方法添加,大家都不会怀疑 , 但自己开发的
控件也能吗vb.net多事件?答案是肯定的,我们可以用一个实际的例子进行说明 。
vb.net 一个过程handle多个事件,怎么判断具体那个事件触发的过程每个按钮都有一个唯一的name或者caption吧 , 用这个检测下就好了 。
if sender.name = "按钮1" then
...
end if
vb.net如何用线程池实现多线程事件响应这个没法做到 。原因
1)当你将方法排入线程池队列后 , 此方法在有线程池线程变得可用时执行 。
2)线程池中某个线程的可用与不可用,是由.net 后台决定,用户程序无法控制的
3)正如你观察到的:线程启动的时间不同 , 有快有慢,这恰恰说明线程池起作用了:线程池的调度试图让程序响应达到最佳 。
vb.net的,按键连续触发事件,比如,按着键不放,音量增大 。1.定义变量记录键是否被按下,按下vb.net多事件的累计时间
Dim 按下A键As Boolean
Dim 按下A键时间 As Integer
2.添加一个TextBox1用于接收键盘事件,或者直接用窗体vb.net多事件的键盘事件(确保KeyPreview为True)
在KeyDown事件中添加如下代码:
If e.Keycode = keys.A Then 按下A键 = True
在KeyUp事件中添加如下代码:
If e.Keycode = keys.A Then 按下A键 = False

推荐阅读