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

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

vb點虐 動態(tài)按鈕事件的簡單介紹

vb點虐 動態(tài)生成的控件,事件也動態(tài)加,怎么做呢?

你需要的應該是反射,類似如下,我測試通過的:

公司專注于為企業(yè)提供成都網(wǎng)站建設、成都網(wǎng)站設計、微信公眾號開發(fā)、電子商務商城網(wǎng)站建設,微信小程序,軟件按需求定制制作等一站式互聯(lián)網(wǎng)企業(yè)服務。憑借多年豐富的經(jīng)驗,我們會仔細了解各客戶的需求而做出多方面的分析、設計、整合,為客戶設計出具風格及創(chuàng)意性的商業(yè)解決方案,創(chuàng)新互聯(lián)更提供一系列網(wǎng)站制作和網(wǎng)站推廣的服務。

Imports?System.Reflection

Public?Class?Form1

Public?Sub?MMMToolStripMenuItem_Click(sender?As?Object,?e?As?EventArgs)?Handles?MMMToolStripMenuItem.Click

MsgBox("menu?click")

End?Sub

'灶銀在按鈕事件處理里面通過反射名稱調(diào)用相應菜單事數(shù)友件薯辯槐

Public?Sub?CallEventMethod(sender?As?Object,?e?As?EventArgs)

Dim?b?As?Button?=?sender?'獲取點擊的按鈕

'拼接菜單事件名稱

Dim?MethodName?As?String?=?b.Name??"ToolStripMenuItem_Click"

Dim?t?As?Type?=?Me.GetType

Dim?m?As?MethodInfo?=?t.GetMethod(MethodName)

'反射方法

m.Invoke(Me,?New?Object()?{Nothing,?Nothing})

End?Sub

'動態(tài)生成了按鈕

Private?Sub?Form1_Load(sender?As?Object,?e?As?EventArgs)?Handles?MyBase.Load

Dim?btn?As?New?Button

btn.Location?=?New?Point(100,?100)

btn.Name?=?"MMM"?'關鍵

btn.Text?=?"MMM"

'注冊事件

AddHandler?btn.Click,?AddressOf?Me.CallEventMethod

Me.Controls.Add(btn)?

End?Sub

End?Class

(vb點虐 )動態(tài)添加的控件如何多次響應事件?

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

唯一的缺陷是不能動態(tài)加載控含雀逗件,必須在設計時通過引用,將控件放置在窗體上。

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

由于以前的版本中可以動態(tài)創(chuàng)建進程外服務:如果對象是外部可創(chuàng)建的,可在 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

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

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

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

現(xiàn)動態(tài)ActiveX控件找出了一條切實可行的方法,下面以一個具體的實例來詳細說明。

一、ActiveX控件

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

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

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

---- ActiveX 部件通過客戶端/服務器關系與應用程序— 及與部件相互之間— 交互作

用??蛻舳耸鞘褂貌考δ艿膽贸绦虼a或部件。服務器是部件及其關聯(lián)的對象。例

如,假設應用程序使用 ActiveX 控件來提供一個標準的雇員窗體,供公司的多種應用

程序使用。提供雇員窗體的 ActiveX 控件就是服務器,使用這個控件的應用程序就是

服務器的客戶端。

二、加載方法

---- VB6.0中對Controls 集合進行了擴展,以前版本中Controls 集合在窗體上列舉出

已加載的控件,這在迭代過程中是很有用的。Controls 集合標識一個叫做 Controls

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

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

Text1.Text="Hello, world"

其實也可以使用如下代碼達到同一目的:

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

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

供這兩種方法,而沒有提供Add方法,因為沒有Add,這兩種方法也就沒什么用處),增

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

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的標準語法,它在例程中也是如此演示的,不過該方法雖然現(xiàn)實了控件

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

設計響應事件代碼,如:事件Sub MyButton_Click()將是非法的,當然,可以將要響應

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

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

利用該方法不行,通過分析VBControls等相關對象,找出VBControlExtender對象與

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

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

計控件的事件,熟習類編程的朋友對帶事件的對象聲明一定不會陌生:

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

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

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

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

同類對象的事件放置一起,各自獨立運作。將上面的代碼改寫一下就能提供Click事件

了:

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

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

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

---- 當然對微軟提供的標準控件能采用該方法添加,大家都不會懷疑,但自己開發(fā)的

控件也能嗎?答案是肯定的,我們可以用一個實際的例子進行說明。

怎樣指定一個動態(tài)增加按鈕的事件(vb點虐 )

''' summary

''' 添加多個按鈕到一個容器中.

''' /summary

''' param name="StartPos"所有按鈕開始點./param

''' param name="ButtonSize"按鈕的大小.念磨/param

''' param name="絕敗ButtonSpace"按鈕的間距/param

''' param name="ButtonCount"按鈕的總數(shù)/param

''' param name="AddingContainer"被添加到的容器/param

''' remarks/remarks

Private Sub AddButtons(ByVal StartPos As Point, ByVal ButtonSize As Size, _

ByVal ButtonSpace As Size, ByVal ButtonCount As Integer, _

ByVal AddingContainer As Control)

Dim mBtnPos As Point = StartPos

For ItemTemp As Integer = 0 To ButtonCount - 1

Dim NewButton As Button = New Button() With

mBtnPos.Y += ButtonSpace.Height + ButtonSize.Height

If mBtnPos.Y AddingContainer.Height Then

mBtnPos.Y = StartPos.Y

mBtnPos.X += ButtonSpace.Width + ButtonSize.Width

End If

NewButton.Text = String.Format(":", CStr(ItemTemp + 1))

AddHandler NewButton.Click, AddressOf btnzh_Click

AddingContainer.Controls.Add(NewButton)

Next

End Sub

Private Sub btnzh_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnzh.Click

Dim ItemCount As Integer = 0

Try

ItemCount = CInt(txtChoice.Text)

Catch ex As Exception

MessageBox.Show("您輸入的數(shù)字無并高顫法解析為數(shù)字.")

Return

End Try

AddButtons(New Point(2, 2), New Size(60, 40), New Size(20, 30), ItemCount, Me)

End Sub

Private Sub btnzh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

End Sub

vb點虐 動態(tài)菜單click事件

先要新建一個index為0的菜單(設置為不可慎族見),然后把動態(tài)生產(chǎn)的菜單加入進來,這配孝燃樣就可以使用遍歷菜單的方法,并判讀下當前按培虛下的菜單名稱。

參看:網(wǎng)頁鏈接


當前文章:vb點虐 動態(tài)按鈕事件的簡單介紹
當前地址:http://weahome.cn/article/ddpdohs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部