扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
这个没法做到。原因
成都创新互联网络公司拥有十载的成都网站开发建设经验,上1000+客户的共同信赖。提供成都网站建设、网站建设、网站开发、网站定制、外链、建网站、网站搭建、成都响应式网站建设公司、网页设计师打造企业风格,提供周到的售前咨询和贴心的售后服务
1)当你将方法排入线程池队列后,此方法在有线程池线程变得可用时执行。
2)线程池中某个线程的可用与不可用,是由.net 后台决定,用户程序无法控制的
3)正如你观察到的:线程启动的时间不同,有快有慢,这恰恰说明线程池起作用了:线程池的调度试图让程序响应达到最佳。
名称
说明
Activated
当使用代码激活或用户激活窗体时发生。
AutoSizeChanged
当 AutoSize 属性更改时发生。
AutoValidateChanged
当 AutoValidate 属性更改时发生。
BackColorChanged
当 BackColor 属性的值更改时发生。(从 Control 继承。)
BackgroundImageChanged
当 BackgroundImage 属性的值更改时发生。(从 Control 继承。)
BackgroundImageLayoutChanged
当 BackgroundImageLayout 属性更改时发生。(从 Control 继承。)
BindingContextChanged
当 BindingContext 属性的值更改时发生。(从 Control 继承。)
CausesValidationChanged
当 CausesValidation 属性的值更改时发生。(从 Control 继承。)
ChangeUICues
焦点或键盘用户界面 (UI) 提示更改时发生。(从 Control 继承。)
Click
在单击控件时发生。(从 Control 继承。)
ClientSizeChanged
当 ClientSize 属性的值更改时发生。(从 Control 继承。)
Closed
关闭窗体时发生。
Closing
关闭窗体时发生。
ContextMenuChanged
当 ContextMenu 属性的值更改时发生。(从 Control 继承。)
ContextMenuStripChanged
当 ContextMenuStrip 属性的值更改时发生。(从 Control 继承。)
ControlAdded
在将新控件添加到 Control.ControlCollection 时发生。(从 Control 继承。)
ControlRemoved
在从 Control.ControlCollection 移除控件时发生。(从 Control 继承。)
CursorChanged
当 Cursor 属性的值更改时发生。(从 Control 继承。)
Deactivate
当窗体失去焦点并不再是活动窗体时发生。
Disposed
当通过调用 Dispose 方法释放组件时发生。(从 Component 继承。)
DockChanged
当 Dock 属性的值更改时发生。(从 Control 继承。)
DoubleClick
在双击控件时发生。(从 Control 继承。)
DragDrop
拖放操作完成时发生。(从 Control 继承。)
DragEnter
在将对象拖入控件的边界时发生。(从 Control 继承。)
DragLeave
将对象拖出控件的边界时发生。(从 Control 继承。)
DragOver
在将对象拖到控件的边界上发生。(从 Control 继承。)
EnabledChanged
在 Enabled 属性值更改后发生。(从 Control 继承。)
Enter
进入控件时发生。(从 Control 继承。)
FontChanged
在 Font 属性值更改时发生。(从 Control 继承。)
ForeColorChanged
在 ForeColor 属性值更改时发生。(从 Control 继承。)
FormClosed
关闭窗体后发生。
FormClosing
关闭窗体前发生。
GiveFeedback
在执行拖动操作期间发生。(从 Control 继承。)
GotFocus
在控件接收焦点时发生。(从 Control 继承。)
HandleCreated
在为控件创建句柄时发生。(从 Control 继承。)
HandleDestroyed
在控件的句柄处于销毁过程中时发生。(从 Control 继承。)
HelpButtonClicked
单击“帮助”按钮时发生。
HelpRequested
用户请求控件帮助时发生。(从 Control 继承。)
ImeModeChanged
在 ImeMode 属性更改后发生。(从 Control 继承。)
InputLanguageChanged
更改窗体的输入语言后发生。
InputLanguageChanging
当用户尝试更改窗体的输入语言时发生。
Invalidated
控件的显示要求重新绘制时发生。(从 Control 继承。)
KeyDown
在控件有焦点的情况下按下键时发生。(从 Control 继承。)
KeyPress
在控件有焦点的情况下字符、空格或退格键时发生。(从 Control 继承。)
KeyUp
在控件有焦点的情况下释放键时发生。(从 Control 继承。)
Layout
在控件应重新定位其子控件时发生。(从 Control 继承。)
Leave
在输入焦点离开控件时发生。(从 Control 继承。)
Load
在第一次显示窗体前发生。
LocationChanged
在 Location 属性值更改后发生。(从 Control 继承。)
LostFocus
在控件失去焦点时发生。(从 Control 继承。)
MarginChanged
当 Margin 属性更改时发生。
MaximizedBoundsChanged
在 MaximizedBounds 属性的值更改后发生。
MaximumSizeChanged
在 MaximumSize 属性的值更改后发生。
MdiChildActivate
在多文档界面 (MDI) 应用程序内激活或关闭 MDI 子窗体时发生。
MenuComplete
当窗体菜单失去焦点时发生。
MenuStart
当窗体菜单接收焦点时发生。
MinimumSizeChanged
在 MinimumSize 属性的值更改后发生。
MouseCaptureChanged
当控件失去鼠标捕获时发生。(从 Control 继承。)
MouseClick
用鼠标单击控件时发生。(从 Control 继承。)
MouseDoubleClick
用鼠标双击控件时发生。(从 Control 继承。)
MouseDown
当鼠标指针位于控件上并按下鼠标键时发生。(从 Control 继承。)
MouseEnter
在鼠标指针进入控件时发生。(从 Control 继承。)
MouseHover
在鼠标指针停放在控件上时发生。(从 Control 继承。)
MouseLeave
在鼠标指针离开控件时发生。(从 Control 继承。)
MouseMove
在鼠标指针移到控件上时发生。(从 Control 继承。)
MouseUp
在鼠标指针在控件上并释放鼠标键时发生。(从 Control 继承。)
MouseWheel
在控件有焦点且鼠标轮移动时发生。(从 Control 继承。)
Move
在移动控件时发生。(从 Control 继承。)
PaddingChanged
在控件空白区更改时发生。(从 Control 继承。)
Paint
在重绘控件时发生。(从 Control 继承。)
ParentChanged
在 Parent 属性值更改时发生。(从 Control 继承。)
PreviewKeyDown
在焦点位于此控件上的情况下,当有按键动作时发生(在 KeyDown 事件之前发生)。(从Control 继承。)
QueryAccessibilityHelp
在 AccessibleObject 为辅助功能应用程序提供帮助时发生。(从 Control 继承。)
QueryContinueDrag
在拖放操作期间发生,并且允许拖动源确定是否应取消拖放操作。(从 Control 继承。)
RegionChanged
当 Region 属性的值更改时发生。(从 Control 继承。)
Resize
在调整控件大小时发生。(从 Control 继承。)
ResizeBegin
窗体进入大小调整模式时发生。
ResizeEnd
窗体退出大小调整模式时发生。
RightToLeftChanged
在 RightToLeft 属性值更改时发生。(从 Control 继承。)
RightToLeftLayoutChanged
更改 RightToLeftLayout 属性值之后发生。
Scroll
用户或代码滚动工作区时发生。(从 ScrollableControl 继承。)
Shown
只要窗体是首次显示就发生。
SizeChanged
在 Size 属性值更改时发生。(从 Control 继承。)
StyleChanged
在控件样式更改时发生。(从 Control 继承。)
SystemColorsChanged
系统颜色更改时发生。(从 Control 继承。)
TabIndexChanged
此 API 支持 产品 基础结构,不能在代码中直接使用。 当 TabIndex 属性的值更改时发生。
TabStopChanged
当 TabStop 属性更改时发生。
TextChanged
在 Text 属性值更改时发生。(从 Control 继承。)
Validated
在控件完成验证时发生。(从 Control 继承。)
Validating
在控件验证时发生。(从 Control 继承。)
VisibleChanged
在 Visible 属性值更改时发生。(从 Control 继承。)
每个按钮都有一个唯一的name或者caption吧,用这个检测下就好了。
if sender.name = "按钮1" then
...
end if
熟悉VB的朋友对使用ActiveX控件一定不会陌生,众多控件极大地方便了编程,但
唯一的缺陷是不能动态加载控件,必须在设计时通过引用,将控件放置在窗体上。
VB6.0已能够解决该问题,只是帮助中没有明确说明,并且没有描述到一些关键功能,
由于以前的版本中可以动态创建进程外服务:如果对象是外部可创建的,可在 Set 语
句中用 New 关键字、CreateObject 或 GetObject 从部件外面将对象引用赋予变量。
如果对象是从属对象,则需使用高层对象的方法,在 Set 语句中指定一个对象引用:
Dim xlApp1 As Excel.Application
Set xlApp1 = New Excel.Application
或
Dim xlApp As Object '定义存放引用对象的变量。
Set xlApp = CreateObject("excel.application")
xlApp.Visible = True
---- 这些语法很容易造成误导,以为动态加载ActiveX控件也是此方法,可能有朋友也
象我一样利用CreateObject尝试了无数次,却无功而返,不知微软公司是出于何种考
虑,动态加载ActiveX控件是扩展控件集合的方式实现,通过实际摸索,终于就如何实
现动态ActiveX控件找出了一条切实可行的方法,下面以一个具体的实例来详细说明。
一、ActiveX控件
---- ActiveX 控件是 Visual Basic 工具箱的扩充部分。使用 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(progid as String, Name as String);
progid: ActiveX部件的ProgID,如:"VB.CheckBox";
Name:ActiveX部件加载后的名称,如: "MyCheckBox";
若要在窗体上添加一个名为MyButton的按钮,可以使用:
dim oControl as Object '窗体级变量
注意:这里声明为Object对象类型
Private Sub LoadControl()
Set oControl = Controls.Add
("VB.CommandButton", "MyButton")
oControl.Left = 10
oControl.Top = 10
oControl.Visible = True '使控件可见
End Sub
---- 这是VB6.0的标准语法,它在例程中也是如此演示的,不过该方法虽然现实了控件
的动态加载,按钮显示在窗体上,可以象普通按钮一样按下去,但加载的控件不能预先
设计响应事件代码,如:事件Sub MyButton_Click()将是非法的,当然,可以将要响应
的事件封装在控件内部。就编程的观点来看该方法没什么大的用处,开发ActiveX控件
的目的是为了资源共享,为了被其他开发人员利用,所以要提供必要的事件接口,显然
利用该方法不行,通过分析VBControls等相关对象,找出VBControlExtender对象与
EventInfo相结合能提供事件陷井捕捉,VBControlExtender对象对动态添加控件特别有
用,它提供了一套通用的属性、方法、事件给开发人员,它的一个突出特点是能编程设
计控件的事件,熟习类编程的朋友对带事件的对象声明一定不会陌生:
---- Dim WithEvents objElemt as CElemtVBControlExtender也不例外,声明的语法
一样,只不过它有个特殊的事件ObjectEvent(Info As EventInfo),它能捕捉到对象使
用RaiseEvent产生的所有事件,EventInfo数据结构映射了事件的名称、参数个数和参
数的值。VBControlExtender和 EventInfo相结合,采用Select Case 就可以预先将不
同类对象的事件放置一起,各自独立运作。将上面的代码改写一下就能提供Click事件
了:
---- Dim WithEvents oControl As VBControlExtender '带事件声明声明之后您就可
以在代码窗口的左上角的对象下拉框中发现该对象出现了,也就是说,该对象有了事件
或方法了,它的事件有DragDrop,DragOver ,LostFocus ,GotFocus ,ObjectEvent
和Validate,其中ObjectEvent是通用的事件捕捉。
Private Sub LoadControl()
Set oControl = Controls.Add
("VB. CommandButton", "MyButton")
oControl.Visible = True
End Sub
Private Sub oControl_ObjectEvent(Info As EventInfo)
Select Case Info.Name
Case "Click" 'Click事件
'您可以添加处理Click事件代码
MsgBox "您按了MyButton!"
Case Else ' 其他事件
' Handle unknown events here.
End Select
End Sub
---- 当然对微软提供的标准控件能采用该方法添加,大家都不会怀疑,但自己开发的
控件也能吗?答案是肯定的,我们可以用一个实际的例子进行说明。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流