這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)VB6.0中怎么實現(xiàn)多窗體交互,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新互聯(lián)建站公司2013年成立,公司自成立以來始終致力于為企業(yè)提供官網(wǎng)建設(shè)、移動互聯(lián)網(wǎng)業(yè)務(wù)開發(fā)(小程序開發(fā)、手機網(wǎng)站建設(shè)、app開發(fā)定制等),并且包含互聯(lián)網(wǎng)基礎(chǔ)服務(wù)(域名、主機服務(wù)、企業(yè)郵箱、網(wǎng)絡(luò)營銷等)應(yīng)用服務(wù);以先進完善的建站體系及不斷開拓創(chuàng)新的精神理念,幫助企業(yè)客戶實現(xiàn)互聯(lián)網(wǎng)業(yè)務(wù),嚴(yán)格把控項目進度與質(zhì)量監(jiān)控加上過硬的技術(shù)實力獲得客戶的一致贊譽。
1、保持窗體引用的全局性
前面提到,進行 .NET 窗體編程時應(yīng)該牢牢把握下列原則:在訪問窗體之前,你必須進行窗體實例化;如果在項目中有多處代碼訪問同一窗體,則你必須把它的同一實例指針傳遞給這些代碼。對于早已習(xí)慣了直接把默認(rèn)窗體實例當(dāng)成全局變量來使用的VB6.0程序員來說,這可是個嚴(yán)重的挑戰(zhàn)。好在 .NET 為你提供了兩條出路:其一,把窗體實例指針保存在全局變量中;其二,把窗體實例指針傳遞給任何需要訪問它的窗體、類、模塊或者過程。
2、.NET 中的數(shù)值全局化
我以前曾經(jīng)指出,Visual Basic .NET 不支持全局變量,現(xiàn)在我又要說,在 .NET 中可以在某種程度上實現(xiàn)數(shù)值全局化。這算不算此一時,彼一時?不,我不是那種人。Visual Basic .NET 確實不支持全局變量,然而它借助 Shared (相當(dāng)于 C# 中的 static) 變量卻能模擬全局變量。事實上,前面介紹的 Visual Basic 升級向?qū)ё詣犹砑拥酱绑w代碼中的 DefInstance 屬性就是 Shared 類成員。無論容納 DefInstance 屬性的窗體類是否已經(jīng)實例化,它都能被項目中的任何代碼所引用。象這樣的 Shared 屬性不就相當(dāng)于全局變量嗎?因此,你可以創(chuàng)建這樣的類:
Public Class myForms Private Shared m_CustomerForm As CustomerForm Public Shared Property CustomerForm() As CustomerForm Get Return m_CustomerForm End Get Set(ByVal Value As CustomerForm) m_CustomerForm = Value End Set End Property End Class
你需要在***實例化一個窗體時,把該窗體的實例保存到一個類中:
Dim myNewCust As New CustomerForm() myNewCust.Show() myForms.CustomerForm = myNewCust
這里的 CustomerForm 屬性值就是你的窗體實例。于是,其它代碼就能從項目的任何地方通過它來間接訪問你的窗體了:
Module DoingStuffWithForms Sub DoExcitingThings() myForms.CustomerForm.Text = _ DateTime.Now().ToLongTimeString End Sub End Module
像這樣把窗體實例保存為屬性值就能按照你的要求模擬VB6.0中的全局變量。如此模擬的“全局變量”其作用域比類域 (class scope) 高一個層次。所謂類域,是指變量僅僅在定義它的類(確切地說,應(yīng)該包括模塊、類或窗體)中有效。比類域還低一層次的是過程域 (procedure scope),即變量僅僅在定義它的例程中有效。
上述就是小編為大家分享的VB6.0中怎么實現(xiàn)多窗體交互了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。