看板 Visual_Basic 關於我們 聯絡資訊
請輸入專案類型(網站專案或者應用程式專案):應用程式 不好意思,想請問一下 假設我有三個表單 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
johnpage:不是有爸爸 11/22 06:34
Prochihua:您好,爸爸跟小孩之間可以溝通,小孩跟小孩之間沒辦法@@ 11/22 09:22
MOONRAKER:阿爸爸當然知道自己有幾個小孩吧 11/22 11:11
MOONRAKER:MSDN http://goo.gl/Bx25kn 11/22 11:11
MOONRAKER:這邊討論可以的話也詳細看一看 http://goo.gl/R9xOVi 11/22 11:11
johnpage:大兒子跟小兒子溝通不良,可以透過爸爸來處理,畢竟爸爸 11/22 18:06
johnpage:還是最了解自己的小孩。 11/22 18:06
Prochihua:謝謝兩位大大,M兄提供的網址我看了,不太懂@@ 11/23 10:25
Prochihua:綜合j兄和M兄的說法,就是只能把資料先傳給爸爸再轉達? 11/23 10:32
MOONRAKER:要做什麼跟object講就好 VB有OO到那種地步嗎… 11/23 10:56
MOONRAKER:阿你先找到爸爸 再從他的MdiChildren()找出小孩 11/23 10:57
MOONRAKER:不就是兄弟了 11/23 10:57
Prochihua:謝謝M兄,終於能用了 11/23 11:14
Prochihua:CType(Me.MdiParent.MdiChildren(1), Form3).TextBox3.T 11/23 11:14
Prochihua:先找到爸爸Me.Mdiparent,然後再找到小孩Mdichildren 11/23 11:16
Prochihua:至於為什麼要加CType我也不知道 11/23 11:17
Prochihua:只是之前爬到的文都有加,就試著加加看@@ 11/23 11:17
johnpage:資料不是原本的成員,借由ctype抓取 11/23 20:38
MOONRAKER:強迫型別轉換,第二個參數應該是form不是form3 11/23 22:15
MOONRAKER:轉換是轉成form這個類別,不是特定的form個體 11/23 22:16
MOONRAKER:你可以拿掉ctype()看看,以前寫VB.NET 1.1有時可以 11/23 22:17
MOONRAKER:但是現在檢查應該比較嚴格了 11/23 22:17
Prochihua:To M兄,參數改成form的話,會出現: 11/25 08:32
Prochihua:'TextBox3' 不是 'System.Windows.Forms.Form' 的成員 11/25 08:33
Prochihua:改成:Me.MdiParent.MdiChildren(1).TextBox3.Text = Te 11/25 08:34
Prochihua:錯誤訊息同上 11/25 08:34
Prochihua:改成:Me.MdiParent.MdiChildren(1).Form3的話 11/25 08:36
Prochihua:'Form3' 不是 'System.Windows.Forms.Form' 的成員 11/25 08:37
Prochihua:Tp j兄:您的說法比網路上找到的說明來的易懂一點^^ 11/25 08:43
MOONRAKER:那你照你現在這樣寫就好了 把每個textbox再ctype() 11/25 17:31
MOONRAKER:可以繞過這個錯誤 但是那樣程式更難看 X* 11/25 17:32
Prochihua:To M兄:現在才試了一個textbox就已經覺得程式碼超醜@@ 11/25 21:48
Prochihua:等整個弄完再用with美容一下好了^^ 11/25 21:49
johnpage:other way, you can use public on text3. 11/25 23:00
Prochihua:To j兄,用Public的方式我有試過,雖然可以執行,但是實 11/26 00:09
Prochihua:際上不能用,不過也不排除是我的使用方式錯誤@@ 11/26 00:10
johnpage:沒有實體資料可存取 11/26 12:43
johnpage:? 11/26 12:43
Prochihua:假設TextBox3.Text預設值是123的話,在Form2是可以取得 11/26 17:40
Prochihua:123的值,但是如果在form2將textbox3.text的值改成456 11/26 17:41
Prochihua:然後再讀取,顯示出來的值還是123,不會變成456@@ 11/26 17:41
Prochihua:或許我說的不是很清楚,j兄可以看 http://goo.gl/PGCO61 11/26 17:50
Prochihua:我把測試用的proj打包,弄成public的話,只能讀到預設值 11/26 17:51
Prochihua:但是用M兄的方式就可以讀取跟修改了 11/26 17:51
johnpage:程式觀念有誤,程式是辦的到 11/26 23:28
johnpage:請注意實體資料的觀念 11/26 23:28
johnpage:注意f3,這步驟是對的,只是你沒走完 11/26 23:39
Prochihua:To J兄:謝謝提醒,我再去找些資料來看看,不過印象中沒 11/27 09:04
Prochihua:看到過有跟您提醒的地方相關連資料,我會再試試看,謝謝 11/27 09:05
johnpage:提示,form2 and form3 只是ㄧ種類別,資料格式ㄧ種,所 11/27 19:23
johnpage:以使用上要new. 不是直接互叫。還有public的位置也錯了 11/27 19:23
Prochihua:To j兄:這兩天又把以前爬過的文重爬了一次,覺得怪怪的 11/29 12:32
Prochihua:form2、form3在一開始就已經Dim f3 As New Form3 11/29 12:33
Prochihua:那使用的時候再new,不是又多一個form3出來? 11/29 12:34
Prochihua:另外我檢查了一下,要傳值的textbox我有設成Public 11/29 12:35
Prochihua:還是說您是建議我設一個Public的變數來供資料交換用嗎? 11/29 12:37
Prochihua:例如在form1加 Public MyValue2 As String之類的? 11/29 12:37