真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

vb.net事件聲明的簡(jiǎn)單介紹

如何在 vb.net 為動(dòng)態(tài)生成的控件添加事件并傳遞數(shù)據(jù)

'把圖片的聲明放在外面,類里面過(guò)程外面,而且要用As,不然等會(huì)兒沒法用

10年積累的網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有建寧免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

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

'動(dòng)態(tài)生成的控件,加一行

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 '綁定事件和過(guò)程

End Sub

'再來(lái)個(gè)事件,放在聲明的地方,就是類里面、過(guò)程外面

Private Event returnid(ByVal id As String) '這個(gè)事件可以傳遞值哦~

'普通的單擊事件

Private Sub mypic_Click()

RaiseEvent returnid(myPicture.Name)

End Sub

'會(huì)傳值的事件過(guò)程

Private Sub idReturned(ByVal id As String)

Dim bookInfo As New BookInfo

bookInfo.Show()

Me.Parent.Enabled = False

'用id變量做點(diǎn)什么吧

End Sub

如果要改事件的簽名(參數(shù)一類的)的話,得重寫控件。你可以這樣自己弄一個(gè)事件。

VB.NET 事件的含義

TextBox1_TextChanged() 'TextBox1.text屬性改變時(shí)發(fā)生

?Label1_Click() 'Label1被鼠標(biāo)點(diǎn)擊時(shí)發(fā)生

?MenuItem1_Click() 'MenuItem1被鼠標(biāo)點(diǎn)擊時(shí)發(fā)生

?Label1_MouseDown() '鼠標(biāo)左鍵在Label1上按下時(shí)發(fā)生

?Label1_DoubleClick() '有點(diǎn)難我也不太清楚,在MSDN上查了下:

雙擊操作由用戶操作系統(tǒng)的鼠標(biāo)設(shè)置確定。用戶可以設(shè)置兩次單擊鼠標(biāo)按鈕之間的時(shí)間以便將這兩次單擊認(rèn)為是雙擊而不是兩次單擊。每當(dāng)雙擊控件時(shí),就會(huì)引發(fā) Click 事件。例如,如果您有 Form 的 Click 和 DoubleClick 事件的事件處理程序,則當(dāng)雙擊該窗體并同時(shí)調(diào)用這兩個(gè)方法時(shí),會(huì)引發(fā) Click 和 DoubleClick 事件。如果雙擊一個(gè)控件并且該控件不支持 DoubleClick 事件,則 Click 事件可能被引發(fā)兩次。

Label1_MouseUp() '鼠標(biāo)左鍵在Label1上放開時(shí)發(fā)生,一般與Label1_MouseDown()搭配使用

?TextBox2_MouseMove() '鼠標(biāo)停留在TextBox2上時(shí)發(fā)生

?Form1_load() '加載窗體時(shí)發(fā)生

?Form1_click() '點(diǎn)擊窗體時(shí)發(fā)生

?Form1_Resize() '窗體調(diào)整大小后發(fā)生

Form1_KeyPress() '當(dāng)窗體有焦點(diǎn)鍵盤有操作時(shí)發(fā)生

?Form1_KeyDown() '當(dāng)窗體具有焦點(diǎn)并鍵盤有按鍵按下時(shí)發(fā)生

?Form1_KeyUp() '當(dāng)窗體焦點(diǎn)并鍵盤有按鍵放開時(shí)發(fā)生

(vb.net)動(dòng)態(tài)添加的控件如何多次響應(yīng)事件?

熟悉VB的朋友對(duì)使用ActiveX控件一定不會(huì)陌生,眾多控件極大地方便了編程,但

唯一的缺陷是不能動(dòng)態(tài)加載控件,必須在設(shè)計(jì)時(shí)通過(guò)引用,將控件放置在窗體上。

VB6.0已能夠解決該問題,只是幫助中沒有明確說(shuō)明,并且沒有描述到一些關(guān)鍵功能,

由于以前的版本中可以動(dòng)態(tài)創(chuàng)建進(jìn)程外服務(wù):如果對(duì)象是外部可創(chuàng)建的,可在 Set 語(yǔ)

句中用 New 關(guān)鍵字、CreateObject 或 GetObject 從部件外面將對(duì)象引用賦予變量。

如果對(duì)象是從屬對(duì)象,則需使用高層對(duì)象的方法,在 Set 語(yǔ)句中指定一個(gè)對(duì)象引用:

Dim xlApp1 As Excel.Application

Set xlApp1 = New Excel.Application

Dim xlApp As Object '定義存放引用對(duì)象的變量。

Set xlApp = CreateObject("excel.application")

xlApp.Visible = True

---- 這些語(yǔ)法很容易造成誤導(dǎo),以為動(dòng)態(tài)加載ActiveX控件也是此方法,可能有朋友也

象我一樣利用CreateObject嘗試了無(wú)數(shù)次,卻無(wú)功而返,不知微軟公司是出于何種考

慮,動(dòng)態(tài)加載ActiveX控件是擴(kuò)展控件集合的方式實(shí)現(xiàn),通過(guò)實(shí)際摸索,終于就如何實(shí)

現(xiàn)動(dòng)態(tài)ActiveX控件找出了一條切實(shí)可行的方法,下面以一個(gè)具體的實(shí)例來(lái)詳細(xì)說(shuō)明。

一、ActiveX控件

---- ActiveX 控件是 Visual Basic 工具箱的擴(kuò)充部分。使用 ActiveX 控件的方法與

使用其它標(biāo)準(zhǔn)內(nèi)裝的控件,如 CheckBox 控件,完全一樣。在程序中加入 ActiveX 控

件后,它將成為開發(fā)和運(yùn)行環(huán)境的一部分,并為應(yīng)用程序提供新的功能。

---- ActiveX 部件通過(guò)客戶端/服務(wù)器關(guān)系與應(yīng)用程序— 及與部件相互之間— 交互作

用??蛻舳耸鞘褂貌考δ艿膽?yīng)用程序代碼或部件。服務(wù)器是部件及其關(guān)聯(lián)的對(duì)象。例

如,假設(shè)應(yīng)用程序使用 ActiveX 控件來(lái)提供一個(gè)標(biāo)準(zhǔn)的雇員窗體,供公司的多種應(yīng)用

程序使用。提供雇員窗體的 ActiveX 控件就是服務(wù)器,使用這個(gè)控件的應(yīng)用程序就是

服務(wù)器的客戶端。

二、加載方法

---- VB6.0中對(duì)Controls 集合進(jìn)行了擴(kuò)展,以前版本中Controls 集合在窗體上列舉出

已加載的控件,這在迭代過(guò)程中是很有用的。Controls 集合標(biāo)識(shí)一個(gè)叫做 Controls

的內(nèi)在窗體級(jí)變量。如果忽略可選的 object 所在處的整數(shù),則關(guān)鍵字 Controls 必須

包括在內(nèi)。我們通常在窗口中使用如下代碼:

Text1.Text="Hello, world"

其實(shí)也可以使用如下代碼達(dá)到同一目的:

Controls(1).Text="Hello, world"

---- 在VB6.0中除了原來(lái)的Clear、Remove 方法外(很奇怪,為什么微軟在VB5.0中只提

供這兩種方法,而沒有提供Add方法,因?yàn)闆]有Add,這兩種方法也就沒什么用處),增

加了Add方法,該方法就是用于動(dòng)態(tài)加載控件的:

Controls.Add(progid as String, Name as String);

progid: ActiveX部件的ProgID,如:"VB.CheckBox";

Name:ActiveX部件加載后的名稱,如: "MyCheckBox";

若要在窗體上添加一個(gè)名為MyButton的按鈕,可以使用:

dim oControl as Object '窗體級(jí)變量

注意:這里聲明為Object對(duì)象類型

Private Sub LoadControl()

Set oControl = Controls.Add

("VB.CommandButton", "MyButton")

oControl.Left = 10

oControl.Top = 10

oControl.Visible = True '使控件可見

End Sub

---- 這是VB6.0的標(biāo)準(zhǔn)語(yǔ)法,它在例程中也是如此演示的,不過(guò)該方法雖然現(xiàn)實(shí)了控件

的動(dòng)態(tài)加載,按鈕顯示在窗體上,可以象普通按鈕一樣按下去,但加載的控件不能預(yù)先

設(shè)計(jì)響應(yīng)事件代碼,如:事件Sub MyButton_Click()將是非法的,當(dāng)然,可以將要響應(yīng)

的事件封裝在控件內(nèi)部。就編程的觀點(diǎn)來(lái)看該方法沒什么大的用處,開發(fā)ActiveX控件

的目的是為了資源共享,為了被其他開發(fā)人員利用,所以要提供必要的事件接口,顯然

利用該方法不行,通過(guò)分析VBControls等相關(guān)對(duì)象,找出VBControlExtender對(duì)象與

EventInfo相結(jié)合能提供事件陷井捕捉,VBControlExtender對(duì)象對(duì)動(dòng)態(tài)添加控件特別有

用,它提供了一套通用的屬性、方法、事件給開發(fā)人員,它的一個(gè)突出特點(diǎn)是能編程設(shè)

計(jì)控件的事件,熟習(xí)類編程的朋友對(duì)帶事件的對(duì)象聲明一定不會(huì)陌生:

---- Dim WithEvents objElemt as CElemtVBControlExtender也不例外,聲明的語(yǔ)法

一樣,只不過(guò)它有個(gè)特殊的事件ObjectEvent(Info As EventInfo),它能捕捉到對(duì)象使

用RaiseEvent產(chǎn)生的所有事件,EventInfo數(shù)據(jù)結(jié)構(gòu)映射了事件的名稱、參數(shù)個(gè)數(shù)和參

數(shù)的值。VBControlExtender和 EventInfo相結(jié)合,采用Select Case 就可以預(yù)先將不

同類對(duì)象的事件放置一起,各自獨(dú)立運(yùn)作。將上面的代碼改寫一下就能提供Click事件

了:

---- Dim WithEvents oControl As VBControlExtender '帶事件聲明聲明之后您就可

以在代碼窗口的左上角的對(duì)象下拉框中發(fā)現(xiàn)該對(duì)象出現(xiàn)了,也就是說(shuō),該對(duì)象有了事件

或方法了,它的事件有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

---- 當(dāng)然對(duì)微軟提供的標(biāo)準(zhǔn)控件能采用該方法添加,大家都不會(huì)懷疑,但自己開發(fā)的

控件也能嗎?答案是肯定的,我們可以用一個(gè)實(shí)際的例子進(jìn)行說(shuō)明。

vb.net:聲明事件和引用事件分別用的什么語(yǔ)句

聲明事件只需用

private event 事件名稱(參數(shù)表)

在通用部分聲明

引用這個(gè)詞不太恰當(dāng),應(yīng)該說(shuō)是觸發(fā)

在需要觸發(fā)的地方用

raiseevent 事件名稱(參數(shù)表)就可以了

vb.net高手請(qǐng)幫幫我看看下面這代碼什么意思,詳解哦,先謝了,Handles 作用是什么

在VB.Net當(dāng)中,事件的"關(guān)聯(lián)"是需要明顯標(biāo)志的,不像vb6當(dāng)中,聲明一個(gè)過(guò)程就是事件執(zhí)行過(guò)程了

Handles用來(lái)靜態(tài)"關(guān)聯(lián)"一個(gè)或多個(gè)事件到一個(gè)過(guò)程

"關(guān)聯(lián)"時(shí),過(guò)程的簽名必須與事件的簽名相同(簽名的意義請(qǐng)查看相關(guān)文檔)

在VB.Net當(dāng)中,事件也是一個(gè)對(duì)象(VB.Net當(dāng)中一切皆為對(duì)象)

使用Handles時(shí)實(shí)際就相當(dāng)于創(chuàng)建了一個(gè)對(duì)委托的實(shí)現(xiàn)(委托的意義請(qǐng)查看相關(guān)文檔)

可以簡(jiǎn)單的認(rèn)為,當(dāng)事件被觸發(fā)時(shí),被Handles"關(guān)聯(lián)"了的那些過(guò)程代碼將被執(zhí)行

而且,被"關(guān)聯(lián)"的過(guò)程可以任意起名,不需要與事件和對(duì)象的名稱相對(duì)應(yīng)

上述代碼如果去掉Handles 及其后面的內(nèi)容,它將是一個(gè)最普通不過(guò)的過(guò)程,與其它過(guò)程沒有兩樣,也不會(huì)有任何事件被觸發(fā)時(shí)去執(zhí)行這段代碼,正因?yàn)榧尤肓薍andles 及其后面的一堆事件,它才會(huì)因事件被觸發(fā)而被執(zhí)行

說(shuō)得再簡(jiǎn)單一點(diǎn): 當(dāng)PictureBox1.DoubleClick, PictureBox4.DoubleClick, PictureBox3.DoubleClick,PictureBox2.DoubleClick當(dāng)中的任何一個(gè)事件被觸發(fā)時(shí),上述這個(gè)過(guò)程的代碼都將被執(zhí)行

再說(shuō)說(shuō)參數(shù): sender表示觸發(fā)了此事件的對(duì)象,在這里就是PictureBox1/PictureBox2/PictureBox3/PictureBox4當(dāng)中的某一個(gè),利用它能知道到底是哪個(gè)對(duì)象觸發(fā)了此事件,e在這里沒有用處,利用不到什么,之所以有它,是因?yàn)镺bject/EventArgs是.Net事件的基本簽名方式,它的好處在你以后對(duì).Net深入之后能體會(huì)到.

這些參數(shù)的值都是通過(guò)被觸發(fā)的事件傳遞過(guò)來(lái)的,可以簡(jiǎn)單的認(rèn)為[事件調(diào)用了此過(guò)程并為參數(shù)賦了值]

vb.net引發(fā)事件的問題,RaiseEvent

在代碼的開頭:

用WithEvents聲明類,比如 Private WithEvents 變量名 As New 類名

用Handles邦定事件,比如Private Sub 過(guò)程名() Handles 變量.事件名

最后引發(fā)事件就相當(dāng)于執(zhí)行定義好的一個(gè)綁定過(guò)程


當(dāng)前名稱:vb.net事件聲明的簡(jiǎn)單介紹
網(wǎng)頁(yè)地址:http://weahome.cn/article/hghdjh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部