日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

如何在窗体之间通讯的几种方法 ? VB.NET方案

發布時間:2025/3/20 asp.net 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何在窗体之间通讯的几种方法 ? VB.NET方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? 在面向過程的程序中,我們可以通過窗體名來訪問其他窗體中控件或者數據,但是在面向過程中卻稍有不同,面向過程顯示了它的優點。


? ? ? 假設一個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#等語言中,方法類型……





轉載于:https://www.cnblogs.com/lilongsheng/archive/2012/05/27/3226110.html

總結

以上是生活随笔為你收集整理的如何在窗体之间通讯的几种方法 ? VB.NET方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。