新建---類庫---把你的函數(shù)放在新建的類庫中-----生成ClassLibrary1

簡(jiǎn)陽ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
在net程序中---引用----對(duì)應(yīng)目錄下的ClassLibrary1.dll
對(duì)應(yīng)的代碼定義如: Dim mydll As New ClassLibrary1.Class1
最后就可以用mydll調(diào)用你的函數(shù)MyFunction了: mydll .MyFunction(1, 2)
注意:vb.net編寫的DLL不能用API函數(shù)的方式通過Declare宣告,只能引用的方式使用
vb.net要編寫的DLL能被vb6.0引用,需要先在編譯屬性中選擇“為COM互操作注冊(cè)”打勾
然后在Visual Studio 2008 命令提示中運(yùn)用RegAsm命令加/tlb命令生成tlb文件
例如:c:\ReleaseRegAsm ClassLibrary1.dll /tlb回車就會(huì)在當(dāng)前目錄生成ClassLibrary1.tlb文件
vb6.0中引用ClassLibrary1.tlb即可。
1. Shared Function System.Runtime.
InteropServices.DLLimport("user32.dll")
2. MessageBoxA(ByVal hwnd As Integer,
ByVal text As String, ByVal
lpcaption As String, ByVal
wtype As Integer) As Integer
3. End Function
首先integer被作為32位數(shù)據(jù)替代了long(long是64位)
System是Net語言中的一個(gè)族,System.Runtime.InteropServices是system中的一個(gè)類。System.Runtime.InteropServices.DLLimpor是其中的一個(gè)方法。調(diào)用DLL的API
接口,這個(gè)的意思就是vb6的lib"user32", share是共享的意思,例如:
1. Public Class classA
2. Shared Function System.Runtime.
InteropServices.DLLimport("user32.dll")
MessageBoxA(ByVal h As Integer,
ByVal m As String, ByVal c As
String, ByVal type As Integer) As Integer
3. End Function
4. End Class
你可以這樣調(diào)用 classA.MessageboxA 但是如果沒有這個(gè)share 在class后打點(diǎn)就沒有MessageboxA的成員出現(xiàn)了 ,現(xiàn)在你就象以前一樣的使用他吧。
其實(shí)上面這個(gè)VB.NET函數(shù)調(diào)用方法并不正確,我們?nèi)耘f要使用API聲明,只是換了一各形式
如果你認(rèn)為這就是VB.NET就錯(cuò)了,看看這個(gè):
system.WinForms.MessageBox.Show("對(duì)話內(nèi)容寫在這里", "標(biāo)題寫在這里", messagebox.OK BitOr messagebox.IconAsterisk)
這就是面向?qū)ο螅阋呀?jīng)完成了所有的任務(wù)。不需要任何的API聲明。不需要寫多余的代碼。
1. messagebox.IconAsterisk=驚嘆號(hào)圖標(biāo)
2. messagebox.IconError=錯(cuò)誤圖標(biāo)
3. messagebox.IconExclamation=警告圖標(biāo)
4. messagebox.IconHand=錯(cuò)誤圖標(biāo)
5. messagebox.IconInformation=提示圖標(biāo)
所經(jīng)點(diǎn)NET就是打點(diǎn)到達(dá),在族后面打點(diǎn),在類后面打點(diǎn),在對(duì)象后面打點(diǎn)。第二個(gè)問題就是類與類之間相互的關(guān)系,Net在網(wǎng)上處理人與人的關(guān)系,在程序語言中處理類與類的關(guān)系。倒底是加不加share,倒底是類后面打點(diǎn),還是Dim成一個(gè)對(duì)象(把他當(dāng)一個(gè)變量吧)再說,是等于class,還是New class.是dim xxx as class=new class 還是dim xxx as new class
就是這樣VB.NET函數(shù)調(diào)用將更簡(jiǎn)單,不須要研究一些很難的東西。
如上面所說,你可能還不太了解類、函數(shù)等的作用。
類可以用來封裝一系列操作,或者是一類對(duì)象的特性。像上面的描述,有可能是濫用類了。
建議你這樣,弄一個(gè)專門的運(yùn)算類,里面有四個(gè)運(yùn)算的函數(shù),比如:
Class 運(yùn)算
Shared Function 加(ByVal 加數(shù)1 As Decimal, ByVal 加數(shù)2 As Decimal) As Decimal
'舉個(gè)例子
Return 加數(shù)1 + 加數(shù)2 '百度打不出英文加號(hào),你自己改一下
Exit Function
End Function
Shared Function 減(ByVal 被減數(shù) As Decimal, ByVal 減數(shù) As Decimal) As Decimal
'舉個(gè)例子
Return 被減數(shù) - 減數(shù)
Exit Function
End Function
End Class
上面我寫了兩個(gè)例子,你可以照抄然后自己寫乘除的,總之不要濫用類就行。
PS:Shared函數(shù)的使用不需要類被實(shí)例化,可以直接這樣使用:
Msgbox(運(yùn)算.加(1,2).ToString)
你會(huì)發(fā)現(xiàn)“運(yùn)算”是藍(lán)色的
如果是托管的Dll或則com組件類,直接在項(xiàng)目上添加這個(gè)DLL的引用\x0d\x0a如果是非托管的,已API函數(shù)方式調(diào)用的DLL,使用DllImport方式申明DLL函數(shù)\x0d\x0a\x0d\x0a不過一般這種情況是吧IP地址等配置信息寫在配置文件里面,若XML,INI,應(yīng)用程序配置文件等方式\x0d\x0a\x0d\x0a配置文件用戶可以直接打開查看,連接字符串寫在那里,數(shù)據(jù)庫就不安全了。
調(diào)用過程,調(diào)用過程有諸多技巧,它們與過程的類型、位置以及在應(yīng)用程序中的使用方式有關(guān)。下面說明如何調(diào)用 Sub 過程和 Function 過程。
調(diào)用 Sub 過程
與 Sub 過程不同,在表達(dá)式中,Sub 過程不能用其名字調(diào)用。調(diào)用 Sub 過程的是一個(gè)獨(dú)立的語句。Sub 過程還有一點(diǎn)與函數(shù)不一樣,它不會(huì)用名字返回一個(gè)值。但是,與 Function過程一樣,Sub 過程也可以修改傳遞給它們的任何變量的值。
調(diào)用 Sub 過程有兩種方法:
'以下兩個(gè)語句都調(diào)用了名為 MyProc 的 Sub 過程。
Call MyProc (FirstArgument, SecondArgument)
MyProc FirstArgument, SecondArgument
注意,當(dāng)使用 Call 語法時(shí),參數(shù)必須在括號(hào)內(nèi)。若省略 Call 關(guān)鍵字,則也必須省略參數(shù)兩邊的括號(hào)
調(diào)用函數(shù)過程
通常,調(diào)用自行編寫的函數(shù)過程的方法和調(diào)用 Visual Basic 內(nèi)部函數(shù)過程(例如 Abs)的方法一樣;即在表達(dá)式中寫上它的名字。
'下面的語句都調(diào)用函數(shù) ToDec。
Print 10 * ToDec
X = ToDec
If ToDec = 10 Then Debug.Print "Out of Range"
X = AnotherFunction ( 10 * ToDec)
就像調(diào)用 Sub 過程那樣,也能調(diào)用函數(shù)。下面的語句都調(diào)用同一個(gè)函數(shù):
Call Year (Now)
Year Now
當(dāng)用這種方法調(diào)用函數(shù)時(shí),Visual Basic 放棄返回值。
調(diào)用其它模塊中的過程
在工程中的任何地方都能調(diào)用其它模塊中的公用過程。可能需要指定這樣的模塊,它包含正在調(diào)用的過程。調(diào)用其它模塊中的過程的各種技巧,取決于該過程是在窗體模塊中、類模塊中還是標(biāo)準(zhǔn)模塊中。
窗體中的過程
所有窗體模塊的外部調(diào)用必須指向包含此過程的窗體模塊。如果在窗體模塊 Form1 包含 SomeSub 過程,則可使用下面的語句調(diào)用 Form1 中的過程:
Call Form1.SomeSub(arguments)
類模塊中的過程
與窗體中調(diào)用過程類似,在類模塊中調(diào)用過程要調(diào)用與過程一致并且指向類實(shí)例的變量。例如,DemoClass 是類 Class1 的實(shí)例:
Dim DemoClass as New Class1
DemoClass.SomeSub
但是不同于窗體的是,在引用一個(gè)類的實(shí)例時(shí),不能用類名作限定符。必須首先聲明類的實(shí)例為對(duì)象變量(在這個(gè)例子中是 DemoClass )并用變量名引用它。
標(biāo)準(zhǔn)模塊中的過程
如果過程名是唯一的,則不必在調(diào)用時(shí)加模塊名。無論是在模塊內(nèi),還是在模塊外調(diào)用,結(jié)果總會(huì)引用這個(gè)唯一過程。如果過程僅出現(xiàn)在一個(gè)地方,這個(gè)過程就是唯一的。
如果兩個(gè)以上的模塊都包含同名的過程,那就有必要用模塊名來限定了。在同一模塊內(nèi)調(diào)用一個(gè)公共過程就會(huì)運(yùn)行該模塊內(nèi)的過程。例如,對(duì)于 Module1 和 Module2 中名為 CommonName 的過程,從 Module2 中調(diào)用 CommonName 則運(yùn)行 Module2 中的 CommonName 過程,而不是 Module1 中的 CommonName 過程。
從其它模塊調(diào)用公共過程名時(shí)必須指定那個(gè)模塊。例如,若在 Module1 中調(diào)用 Module2 中的 CommonName 過程,要用下面的語句:
Module2.CommonName (arguments)
Public ? 用于聲明對(duì)所有模塊中的所有其它過程都可以使用的過程。?
Private ?用于聲明只能在包含該聲明的模塊中使用的過程。
一、帶窗體的dll創(chuàng)建
1、先新建 類庫(testdll),在項(xiàng)目中添加兩個(gè)窗體form1(主窗體)、form2,為了與后面的調(diào)用區(qū)分分別命名為fm1,fm2;并在fm1窗體中添加一個(gè)按鈕用來調(diào)用fm2如下圖
2、在fm1窗體代碼中先引用fm2, ? ?按鈕代碼調(diào)用fm2.如圖
3、生成dll,(class1.vb中不需要寫任何代碼)
二、調(diào)用dll
1、新建 一個(gè)windows應(yīng)用程序并添加一個(gè)按鈕用來調(diào)用dll中的窗體,選 擇 “項(xiàng)目”-“添加引用”,選擇剛才創(chuàng)建的testdll
2、窗體代碼中先引用testdll,再定義一個(gè)testdll中的fm1對(duì)象,最后執(zhí)行對(duì)象的show方法
3、運(yùn)行結(jié)果如下:
分享文章:vb.net內(nèi)部調(diào)用 vb 調(diào)用
網(wǎng)站地址:http://chinadenli.net/article36/hijcpg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、全網(wǎng)營(yíng)銷推廣、建站公司、外貿(mào)建站、動(dòng)態(tài)網(wǎng)站、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)