重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

关于vb.net事件控件的信息

VB.net中怎么调用控件的事件

软糖来回答罗。

创新互联建站专业为企业提供南海网站建设、南海做网站、南海网站设计、南海网站制作等企业网站建设、网页设计与制作、南海企业网站模板建站服务,十年南海做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

“调用事件”有歧义,你的意思是不是下面两种:

调用事件处理方法

直接调用对象名.方法名

'例如有这样一个按钮点击事件处理程序

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

秒表.Start()

End Sub

'调用它直接用

Button1_Click(me, new EventArgs())

引发事件

Button1.Click.Invoke(me, new EventArgs())

另外 RaiseEvent 也可以引发事件,但不能使用 RaiseEvent 来引发派生窗体的控件事件,只有自己定义的类的事件才能用它引发。

如满意,请采纳,谢谢。

如何在VB.Net中触发一个控件的事件

比如你单击按钮,就触发了按钮的单击事件

你双击按钮,就触发了按钮的双击事件

如何在 vb.net 为动态生成的控件添加事件并传递数据

'把图片的声明放在外面,类里面过程外面,而且要用As,不然等会儿没法用

Dim myPicture As New System.Windows.Forms.PictureBox()

'动态生成的控件,加一行

Private Sub UserControl1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

Me.Panel3.Controls.Add(myPicture)

myPicture.Size =New System.Drawing.Size(115, 160)

myPicture.TabStop =False

myPicture.Name ="p"

myPicture.Cursor = Cursors.Hand

AddHandler myPicture.Click, AddressOf mypic_Click '添加事件

AddHandler returnid, AddressOf idReturned '绑定事件和过程

End Sub

'再来个事件,放在声明的地方,就是类里面、过程外面

Private Event returnid(ByVal id As String) '这个事件可以传递值哦~

'普通的单击事件

Private Sub mypic_Click()

RaiseEvent returnid(myPicture.Name)

End Sub

'会传值的事件过程

Private Sub idReturned(ByVal id As String)

Dim bookInfo As New BookInfo

bookInfo.Show()

Me.Parent.Enabled = False

'用id变量做点什么吧

End Sub

如果要改事件的签名(参数一类的)的话,得重写控件。你可以这样自己弄一个事件。

(vb.net)动态添加的控件如何多次响应事件?

熟悉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

---- 当然对微软提供的标准控件能采用该方法添加,大家都不会怀疑,但自己开发的

控件也能吗?答案是肯定的,我们可以用一个实际的例子进行说明。

vb.net给控件加事件

两种方法:

1. 用WithEvents声明变量,这样你就可以像对待拖上去的控件一样操作:

Public Class Form3

WithEvents btn As New Button

Private Sub Form3_Load(sender As Object, e As EventArgs) Handles Me.Load

Controls.Add(btn)

End Sub

Private Sub btn_Click(sender As Object, e As EventArgs) Handles btn.Click

MsgBox(Now)

End Sub

End Class

2. 使用AddHandler 语句:

Public Class Form3

Private Sub Form3_Load(sender As Object, e As EventArgs) Handles Me.Load

Dim btn As New Button

AddHandler btn.Click, AddressOf btn_Click

Controls.Add(btn)

End Sub

Private Sub btn_Click(sender As Object, e As EventArgs)

MsgBox(Now)

End Sub

End Class

WithEvents (Visual Basic):

AddHandler 语句:


名称栏目:关于vb.net事件控件的信息
网页URL:http://cqcxhl.cn/article/hjpdhj.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP