[VB.NET]請問用MDI管理的子表單要怎麼互相存取呢

看板Visual_Basic作者 (頹廢浪子)時間11年前 (2013/11/22 00:09), 編輯推噓7(7050)
留言57則, 3人參與, 最新討論串1/1
請輸入專案類型(網站專案或者應用程式專案):應用程式 不好意思,想請問一下 假設我有三個表單 form1為MdiContainer 然後在form1 Load的event中 Dim f2 As New Form2 f2.MdiParent = Me f2.Show() 然後在form2 Load的event中 Dim f3 As New Form3 f3.MdiParent = Me.MdiParent f3.Show() 這樣form2跟form3都可以讀取到彼此的資料 如textbox2 in form2 ,textbox3 in form3 在form2使用 MsgBox(Form3.TextBox3.Text) 可以正確顯示出來 但是更改了TextBox3的資料之後 再執行 MsgBox(Form3.TextBox3.Text) 顯示出來的資料並不會因為我改變了資料而改變 (在form3也是一樣的情況) Google了一段時間,找到的都是一個form 產生另一個form 然後彼此之間可以正確存取資料 但是這種用MDI的兩個child form之間的溝通還沒爬到 不曉得有沒有大大能指點一下呢? 在此先說聲謝謝^^ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.34.57.113

11/22 06:34, , 1F
不是有爸爸
11/22 06:34, 1F

11/22 09:22, , 2F
您好,爸爸跟小孩之間可以溝通,小孩跟小孩之間沒辦法@@
11/22 09:22, 2F

11/22 11:11, , 3F
阿爸爸當然知道自己有幾個小孩吧
11/22 11:11, 3F

11/22 11:11, , 4F
11/22 11:11, 4F

11/22 11:11, , 5F
這邊討論可以的話也詳細看一看 http://goo.gl/R9xOVi
11/22 11:11, 5F

11/22 18:06, , 6F
大兒子跟小兒子溝通不良,可以透過爸爸來處理,畢竟爸爸
11/22 18:06, 6F

11/22 18:06, , 7F
還是最了解自己的小孩。
11/22 18:06, 7F

11/23 10:25, , 8F
謝謝兩位大大,M兄提供的網址我看了,不太懂@@
11/23 10:25, 8F

11/23 10:32, , 9F
綜合j兄和M兄的說法,就是只能把資料先傳給爸爸再轉達?
11/23 10:32, 9F

11/23 10:56, , 10F
要做什麼跟object講就好 VB有OO到那種地步嗎…
11/23 10:56, 10F

11/23 10:57, , 11F
阿你先找到爸爸 再從他的MdiChildren()找出小孩
11/23 10:57, 11F

11/23 10:57, , 12F
不就是兄弟了
11/23 10:57, 12F

11/23 11:14, , 13F
謝謝M兄,終於能用了
11/23 11:14, 13F

11/23 11:14, , 14F
CType(Me.MdiParent.MdiChildren(1), Form3).TextBox3.T
11/23 11:14, 14F

11/23 11:16, , 15F
先找到爸爸Me.Mdiparent,然後再找到小孩Mdichildren
11/23 11:16, 15F

11/23 11:17, , 16F
至於為什麼要加CType我也不知道
11/23 11:17, 16F

11/23 11:17, , 17F
只是之前爬到的文都有加,就試著加加看@@
11/23 11:17, 17F

11/23 20:38, , 18F
資料不是原本的成員,借由ctype抓取
11/23 20:38, 18F

11/23 22:15, , 19F
強迫型別轉換,第二個參數應該是form不是form3
11/23 22:15, 19F

11/23 22:16, , 20F
轉換是轉成form這個類別,不是特定的form個體
11/23 22:16, 20F

11/23 22:17, , 21F
你可以拿掉ctype()看看,以前寫VB.NET 1.1有時可以
11/23 22:17, 21F

11/23 22:17, , 22F
但是現在檢查應該比較嚴格了
11/23 22:17, 22F

11/25 08:32, , 23F
To M兄,參數改成form的話,會出現:
11/25 08:32, 23F

11/25 08:33, , 24F
'TextBox3' 不是 'System.Windows.Forms.Form' 的成員
11/25 08:33, 24F

11/25 08:34, , 25F
改成:Me.MdiParent.MdiChildren(1).TextBox3.Text = Te
11/25 08:34, 25F

11/25 08:34, , 26F
錯誤訊息同上
11/25 08:34, 26F

11/25 08:36, , 27F
改成:Me.MdiParent.MdiChildren(1).Form3的話
11/25 08:36, 27F

11/25 08:37, , 28F
'Form3' 不是 'System.Windows.Forms.Form' 的成員
11/25 08:37, 28F

11/25 08:43, , 29F
Tp j兄:您的說法比網路上找到的說明來的易懂一點^^
11/25 08:43, 29F

11/25 17:31, , 30F
那你照你現在這樣寫就好了 把每個textbox再ctype()
11/25 17:31, 30F

11/25 17:32, , 31F
可以繞過這個錯誤 但是那樣程式更難看 X*
11/25 17:32, 31F

11/25 21:48, , 32F
To M兄:現在才試了一個textbox就已經覺得程式碼超醜@@
11/25 21:48, 32F

11/25 21:49, , 33F
等整個弄完再用with美容一下好了^^
11/25 21:49, 33F

11/25 23:00, , 34F
other way, you can use public on text3.
11/25 23:00, 34F

11/26 00:09, , 35F
To j兄,用Public的方式我有試過,雖然可以執行,但是實
11/26 00:09, 35F

11/26 00:10, , 36F
際上不能用,不過也不排除是我的使用方式錯誤@@
11/26 00:10, 36F

11/26 12:43, , 37F
沒有實體資料可存取
11/26 12:43, 37F

11/26 12:43, , 38F
?
11/26 12:43, 38F

11/26 17:40, , 39F
假設TextBox3.Text預設值是123的話,在Form2是可以取得
11/26 17:40, 39F

11/26 17:41, , 40F
123的值,但是如果在form2將textbox3.text的值改成456
11/26 17:41, 40F

11/26 17:41, , 41F
然後再讀取,顯示出來的值還是123,不會變成456@@
11/26 17:41, 41F

11/26 17:50, , 42F
或許我說的不是很清楚,j兄可以看 http://goo.gl/PGCO61
11/26 17:50, 42F

11/26 17:51, , 43F
我把測試用的proj打包,弄成public的話,只能讀到預設值
11/26 17:51, 43F

11/26 17:51, , 44F
但是用M兄的方式就可以讀取跟修改了
11/26 17:51, 44F

11/26 23:28, , 45F
程式觀念有誤,程式是辦的到
11/26 23:28, 45F

11/26 23:28, , 46F
請注意實體資料的觀念
11/26 23:28, 46F

11/26 23:39, , 47F
注意f3,這步驟是對的,只是你沒走完
11/26 23:39, 47F

11/27 09:04, , 48F
To J兄:謝謝提醒,我再去找些資料來看看,不過印象中沒
11/27 09:04, 48F

11/27 09:05, , 49F
看到過有跟您提醒的地方相關連資料,我會再試試看,謝謝
11/27 09:05, 49F

11/27 19:23, , 50F
提示,form2 and form3 只是ㄧ種類別,資料格式ㄧ種,所
11/27 19:23, 50F

11/27 19:23, , 51F
以使用上要new. 不是直接互叫。還有public的位置也錯了
11/27 19:23, 51F

11/29 12:32, , 52F
To j兄:這兩天又把以前爬過的文重爬了一次,覺得怪怪的
11/29 12:32, 52F

11/29 12:33, , 53F
form2、form3在一開始就已經Dim f3 As New Form3
11/29 12:33, 53F

11/29 12:34, , 54F
那使用的時候再new,不是又多一個form3出來?
11/29 12:34, 54F

11/29 12:35, , 55F
另外我檢查了一下,要傳值的textbox我有設成Public
11/29 12:35, 55F

11/29 12:37, , 56F
還是說您是建議我設一個Public的變數來供資料交換用嗎?
11/29 12:37, 56F

11/29 12:37, , 57F
例如在form1加 Public MyValue2 As String之類的?
11/29 12:37, 57F
文章代碼(AID): #1IZZ0xQV (Visual_Basic)
文章代碼(AID): #1IZZ0xQV (Visual_Basic)