如何在表單之間通訊的幾種方法 ? VB.NET方案

來源:互聯網
上載者:User

      在面向過程的程式中,我們可以通過表單名來訪問其他表單中控制項或者資料,但是在面向過程中卻稍有不同,面向過程顯示了它的優點。


      假設一個Window解決方案中,有兩個表單Form1和Form2,Form1表單中有一個DataGridView資料控制項,如何在Form2中訪問DataGridView中資料,即如何?在這兩個表單之間通訊呢?


      第一種方法

      通過設定Form2表單的建構函式,改為帶參數的建構函式,傳入一個對象,在設計模式中經常會傳入類或對象,實現了對資料元素的封裝,有些人通過傳入一些具體參數,如字串、控制項等,無疑這種方式比較局限,擴充性很差,如果Form1中再增加新內容後,還需要改傳遞參數。


      Private mF_Form As Form1

      更改Form2的建構函式為有參數的

      Public Sub New(ByVal form As Form1)
           MyBase.New()
           '該調用是 Windows 表單設計器所必需的。
           InitializeComponent()
           Me.mF_Form = form
        
      End Sub


      現在,就可以把Form1對象傳入Form2中,這裡對Form1的修改也是真正對Form1的修改,因此,也需要謹慎操作。


      在Form1中用到Form2的地方還需要加上一句話:

      Dim form1 As New Form2(Me)

  這是因為Form2的建構函式已經改變,執行個體化Form2時不再調用預設建構函式,需要我們指明參數,然後,執行個體化。
      這裡的Me指的就是Form1當前的執行個體,也就是把當前Form1的執行個體通過Form2的建構函式傳遞給Form2類,否則出現   “錯誤對非共用成員的引用要求對象引用”


       第二種方法

       如果我們在Form2中,這樣聲明:Dim form1 As new Form1 

       我們知道此時form1是一個新的form1執行個體,不是我們要用的那個,我們只需讓這個執行個體變成我們要用的那個即可。

        form1.Owner=Me

        這樣就可以正常通訊了。


        有很多時候為了安全,我們還需要改一個聲明層級,因為這樣可以對原創題變更,很不安全。

        在C#等語言中,方法類型……





聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.