你好,EnableDisconnectNotification、 EnableWriteNotification 這兩個是外部函數(shù)吧,是委托嗎?
創(chuàng)新互聯(lián)公司專注于宜黃網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供宜黃營銷型網(wǎng)站建設(shè),宜黃網(wǎng)站制作、宜黃網(wǎng)頁設(shè)計、宜黃網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務(wù),打造宜黃網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供宜黃網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
建議使用委托可以看看下面的例子
此示例演示如何使用委托將過程傳遞給另一個過程。
委托是一種類型,與任何其他類型一樣可在 Visual Basic 中使用。AddressOf 運算符如果應(yīng)用到一個過程名,則返回一個委托對象。
此示例有一個具有委托參數(shù)的過程,該委托參數(shù)可接受對另一個過程的引用,而引用則是通過 AddressOf 運算符獲得的。
創(chuàng)建委托和匹配過程
創(chuàng)建一個名為 MathOperator 的委托。
Visual Basic
復(fù)制代碼
Delegate Function MathOperator( _
ByVal x As Double, _
ByVal y As Double _
) As Double
創(chuàng)建一個名為 AddNumbers 的過程,其參數(shù)和返回值與 MathOperator 的參數(shù)和返回值匹配,以使簽名匹配。
Visual Basic
復(fù)制代碼
Function AddNumbers( _
ByVal x As Double, _
ByVal y As Double _
) As Double
Return x + y
End Function
創(chuàng)建名為 SubtractNumbers 的過程,其簽名與 MathOperator 匹配。
Visual Basic
復(fù)制代碼
Function SubtractNumbers( _
ByVal x As Double, _
ByVal y As Double _
) As Double
Return x - y
End Function
創(chuàng)建一個名為 DelegateTest 的過程,它接受一個委托作為參數(shù)。
此過程可接受對 AddNumbers 或 SubtactNumbers 的引用,這是因為它們的簽名與 MathOperator 簽名匹配。
Visual Basic
復(fù)制代碼
Sub DelegateTest( _
ByVal x As Double, _
ByVal op As MathOperator, _
ByVal y As Double _
)
Dim ret As Double
ret = op.Invoke(x, y) ' Call the method.
MsgBox(ret)
End Sub
創(chuàng)建一個名為 Test 的過程,它使用 AddNumbers 的委托作為參數(shù)調(diào)用 DelegateTest 一次,然后使用 SubtractNumbers 的委托作為參數(shù)再次調(diào)用。
Visual Basic
復(fù)制代碼
Protected Sub Test()
DelegateTest(5, AddressOf AddNumbers, 3)
DelegateTest(9, AddressOf SubtractNumbers, 3)
End Sub
調(diào)用 Test 時,它首先顯示 AddNumbers 對 5 和 3 的操作結(jié)果,也就是 8。然后顯示 SubtractNumbers 對 9 和 3 的操作結(jié)果,也就是 6。
創(chuàng)建一個名為 MySubDelegate 的委托。
Delegate Sub MySubDelegate(ByVal x As Integer)
聲明一個類,該類包含與該委托具有相同簽名的方法。
Class class1 Sub Sub1(ByVal x As Integer) MsgBox("The value of x is: " CStr(x)) End Sub End Class
定義一個方法,該方法創(chuàng)建該委托的實例并通過調(diào)用內(nèi)置的 Invoke 方法調(diào)用與該委托關(guān)聯(lián)的方法。
Protected Sub DelegateTest() Dim c1 As New class1 ' Create an instance of the delegate. Dim msd As MySubDelegate = AddressOf c1.Sub1 ' Call the method. msd.Invoke(10) End Sub
在VB.Net當(dāng)中,事件的"關(guān)聯(lián)"是需要明顯標(biāo)志的,不像vb6當(dāng)中,聲明一個過程就是事件執(zhí)行過程了
Handles用來靜態(tài)"關(guān)聯(lián)"一個或多個事件到一個過程
"關(guān)聯(lián)"時,過程的簽名必須與事件的簽名相同(簽名的意義請查看相關(guān)文檔)
在VB.Net當(dāng)中,事件也是一個對象(VB.Net當(dāng)中一切皆為對象)
使用Handles時實際就相當(dāng)于創(chuàng)建了一個對委托的實現(xiàn)(委托的意義請查看相關(guān)文檔)
可以簡單的認為,當(dāng)事件被觸發(fā)時,被Handles"關(guān)聯(lián)"了的那些過程代碼將被執(zhí)行
而且,被"關(guān)聯(lián)"的過程可以任意起名,不需要與事件和對象的名稱相對應(yīng)
上述代碼如果去掉Handles 及其后面的內(nèi)容,它將是一個最普通不過的過程,與其它過程沒有兩樣,也不會有任何事件被觸發(fā)時去執(zhí)行這段代碼,正因為加入了Handles 及其后面的一堆事件,它才會因事件被觸發(fā)而被執(zhí)行
說得再簡單一點: 當(dāng)PictureBox1.DoubleClick, PictureBox4.DoubleClick, PictureBox3.DoubleClick,PictureBox2.DoubleClick當(dāng)中的任何一個事件被觸發(fā)時,上述這個過程的代碼都將被執(zhí)行
再說說參數(shù): sender表示觸發(fā)了此事件的對象,在這里就是PictureBox1/PictureBox2/PictureBox3/PictureBox4當(dāng)中的某一個,利用它能知道到底是哪個對象觸發(fā)了此事件,e在這里沒有用處,利用不到什么,之所以有它,是因為Object/EventArgs是.Net事件的基本簽名方式,它的好處在你以后對.Net深入之后能體會到.
這些參數(shù)的值都是通過被觸發(fā)的事件傳遞過來的,可以簡單的認為[事件調(diào)用了此過程并為參數(shù)賦了值]
自己仔細對比啊,就是說你同一個函數(shù)聲明了多次,刪除重復(fù)的就可以了。
項目屬性引用
在列表中找到Shape什么的Dll然后它的屬性里的復(fù)制本地設(shè)置為True。
然后那些dll和exe一起復(fù)制下來。
然后在XP運行。
關(guān)閉VS,到你的項目目錄下,把 項目名稱_TemporaryKey.pfx 文件刪除。
然后,重新打開你的項目,編譯
在Net.WebRequest.Create 之前,嘗試一下用下面代碼,呵呵,只是百度搜到的,還沒有驗證.
System.Net.ServicePointManager.ServerCertificateValidationCallback = New System.Net.Security.RemoteCertificateValidationCallback(AddressOf RemoteCertificateValidationCallback)
Public Shared Function RemoteCertificateValidationCallback(ByVal sender As Object, ByVal certificate As System.Security.Cryptography.X509Certificates.X509Certificate, ByVal chain As System.Security.Cryptography.X509Certificates.X509Chain, ByVal sslPolicyErrors As Net.Security.SslPolicyErrors) As Boolean
Return True
End Function