VB委託和事件

2021-06-23 03:17:51 字數 3166 閱讀 9181



2011-01-25 10:26:28

|  分類:

vb|  標籤:|舉報

|字型大小大中

小訂閱

在委託和事件中,委託的作用就是當事件觸發是會有哪些東西被執行

比如下邊引用的這個例子

當小偷偷東西時,警察會罰錢,自願反扒手會把小偷打一頓

在這裡

小偷偷東西是乙個事件

警察會罰錢,自願反扒手會把小偷打一頓,是該事件所引起的,所觸發的東西

小偷,警察,自願反扒手都是乙個物件

module module1

delegate sub playgamehandler(byval sender as object, byval e as system.eventargs)

public withevents w as wl

sub main()

console.writeline("新的一天開始了....")

dim p as new jc

w = new wl

dim pp as new zyfpd

addhandler w.playgame, addressof p.kouqian

'如果小偷偷東西則引用自願反扒隊的打人處理程式

addhandler w.playgame, addressof pp.daren

w.toudongxi()

console.writeline("天黑了....")

console.readline()

end sub

public class jc

sub new()

console.writeline("生成警察。。。。")

end sub

public sub kouqian(byval sender as object, byval e as system.eventargs)

console.writeline("警察:好小子,膽敢偷東西。。。。")

system.threading.thread.sleep(3000)

console.writeline("警察:看看你小子有多少錢。。。")

dim f as wl = sender

system.threading.thread.sleep(3000)

console.writeline("無賴 的錢:   " + f.qian.tostring)

system.threading.thread.sleep(3000)

console.writeline("開始扣錢......")

system.threading.thread.sleep(3000)

f.qian = f.qian - 500

console.writeline("扣完了....現在無賴 還剩下:" + f.qian.tostring())

system.threading.thread.sleep(3000)

end sub

end class

public class wl

public event playgame as playgamehandler

private m_money as integer

private ey as integer

sub new()

console.writeline("生成無賴....")

m_money = 1000

ey = 5

end sub

property aida() as integer

getreturn ey

end get

set(byval value as integer)

ey = value

end set

end property

property qian() as integer

getreturn m_money

end get

set(byval value as integer)

m_money = value

end set

end property

public sub toudongxi()

console.writeline("無賴開始偷東西了")

system.threading.thread.sleep(3000)

'例項化事件引數

dim e as new system.eventargs

raiseevent playgame(me, e)

end sub

end class

public class zyfpd

sub new()

console.writeline("自願反扒隊來了.....")

system.threading.thread.sleep(3000)

end sub

public sub daren(byval sender as object, byval e as system.eventargs)

system.threading.thread.sleep(3000)

console.writeline("自願反扒隊:好小子,敢偷東西...")

system.threading.thread.sleep(3000)

console.writeline("自願反扒隊:你小子捱過幾次打了...")

dim bn as wl = sender

system.threading.thread.sleep(3000)

console.writeline("無賴:" + bn.aida.tostring + "次")

system.threading.thread.sleep(3000)

console.writeline("自願反扒隊:那也得揍你,先來一拳....   ")

system.threading.thread.sleep(3000)

console.writeline("自願反扒隊:再來一腳......")

system.threading.thread.sleep(3000)

console.writeline("自願反扒隊:打完了...趕緊去醫院吧...")

end sub

end class

end module

VB的委託和事件

委託和事件 委託,這個詞一聽被邪乎。幾年前我還以為和律師什麼的有關係。可事實上 委託 就是system.delegate 類。它是乙個類,這就意味著它是乙個資料型別,而且是乙個引用型別。它能夠引用物件的方法 例項方法 和類的方法 靜態方法 在vb 裡的shared 方法 使用委託可以概括為三步 宣告...

委託和事件

主要過程如下 1.在後台 中,我們可以定義處理程式方法alartrang 2.然後定義委託,引用到處理程式方法的例項。3.最後將委託新增到事件中。從而,引發事件時就會呼叫相關的事件處理方法。若要使用在另乙個類中定義的事件,必須定義和註冊乙個事件處理程式。事件 處理程式必須具有與為事件宣告的委託相同的...

委託和事件

委託的宣告 public delegate void mydelegate string str 注1.委託的定義和方法的定義類似,只是在前面加了乙個delegate,但委託不是方法,它是一種型別。是一種特殊的型別,看成是一種新的物件型別比較好理解。用於對與該委託有相 同簽名的方法呼叫。2.委託相當...