作者Prochihua (颓废浪子)
看板Visual_Basic
标题[VB.NET]请问用MDI管理的子表单要怎麽互相存取呢
时间Fri Nov 22 00:09:29 2013
请输入专案类型(网站专案或者应用程式专案):应用程式
不好意思,想请问一下
假设我有三个表单
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
1F:推 johnpage:不是有爸爸 11/22 06:34
2F:→ Prochihua:您好,爸爸跟小孩之间可以沟通,小孩跟小孩之间没办法@@ 11/22 09:22
3F:→ MOONRAKER:阿爸爸当然知道自己有几个小孩吧 11/22 11:11
6F:推 johnpage:大儿子跟小儿子沟通不良,可以透过爸爸来处理,毕竟爸爸 11/22 18:06
7F:→ johnpage:还是最了解自己的小孩。 11/22 18:06
8F:→ Prochihua:谢谢两位大大,M兄提供的网址我看了,不太懂@@ 11/23 10:25
9F:→ Prochihua:综合j兄和M兄的说法,就是只能把资料先传给爸爸再转达? 11/23 10:32
10F:→ MOONRAKER:要做什麽跟object讲就好 VB有OO到那种地步吗… 11/23 10:56
11F:→ MOONRAKER:阿你先找到爸爸 再从他的MdiChildren()找出小孩 11/23 10:57
12F:→ MOONRAKER:不就是兄弟了 11/23 10:57
13F:→ Prochihua:谢谢M兄,终於能用了 11/23 11:14
14F:→ Prochihua:CType(Me.MdiParent.MdiChildren(1), Form3).TextBox3.T 11/23 11:14
15F:→ Prochihua:先找到爸爸Me.Mdiparent,然後再找到小孩Mdichildren 11/23 11:16
16F:→ Prochihua:至於为什麽要加CType我也不知道 11/23 11:17
17F:→ Prochihua:只是之前爬到的文都有加,就试着加加看@@ 11/23 11:17
18F:推 johnpage:资料不是原本的成员,借由ctype抓取 11/23 20:38
19F:→ MOONRAKER:强迫型别转换,第二个参数应该是form不是form3 11/23 22:15
20F:→ MOONRAKER:转换是转成form这个类别,不是特定的form个体 11/23 22:16
21F:→ MOONRAKER:你可以拿掉ctype()看看,以前写VB.NET 1.1有时可以 11/23 22:17
22F:→ MOONRAKER:但是现在检查应该比较严格了 11/23 22:17
23F:→ Prochihua:To M兄,参数改成form的话,会出现: 11/25 08:32
24F:→ Prochihua:'TextBox3' 不是 'System.Windows.Forms.Form' 的成员 11/25 08:33
25F:→ Prochihua:改成:Me.MdiParent.MdiChildren(1).TextBox3.Text = Te 11/25 08:34
26F:→ Prochihua:错误讯息同上 11/25 08:34
27F:→ Prochihua:改成:Me.MdiParent.MdiChildren(1).Form3的话 11/25 08:36
28F:→ Prochihua:'Form3' 不是 'System.Windows.Forms.Form' 的成员 11/25 08:37
29F:→ Prochihua:Tp j兄:您的说法比网路上找到的说明来的易懂一点^^ 11/25 08:43
30F:→ MOONRAKER:那你照你现在这样写就好了 把每个textbox再ctype() 11/25 17:31
31F:→ MOONRAKER:可以绕过这个错误 但是那样程式更难看 X* 11/25 17:32
32F:→ Prochihua:To M兄:现在才试了一个textbox就已经觉得程式码超丑@@ 11/25 21:48
33F:→ Prochihua:等整个弄完再用with美容一下好了^^ 11/25 21:49
34F:推 johnpage:other way, you can use public on text3. 11/25 23:00
35F:→ Prochihua:To j兄,用Public的方式我有试过,虽然可以执行,但是实 11/26 00:09
36F:→ Prochihua:际上不能用,不过也不排除是我的使用方式错误@@ 11/26 00:10
37F:→ johnpage:没有实体资料可存取 11/26 12:43
38F:→ johnpage:? 11/26 12:43
39F:→ Prochihua:假设TextBox3.Text预设值是123的话,在Form2是可以取得 11/26 17:40
40F:→ Prochihua:123的值,但是如果在form2将textbox3.text的值改成456 11/26 17:41
41F:→ Prochihua:然後再读取,显示出来的值还是123,不会变成456@@ 11/26 17:41
43F:→ Prochihua:我把测试用的proj打包,弄成public的话,只能读到预设值 11/26 17:51
44F:→ Prochihua:但是用M兄的方式就可以读取跟修改了 11/26 17:51
45F:推 johnpage:程式观念有误,程式是办的到 11/26 23:28
46F:→ johnpage:请注意实体资料的观念 11/26 23:28
47F:推 johnpage:注意f3,这步骤是对的,只是你没走完 11/26 23:39
48F:→ Prochihua:To J兄:谢谢提醒,我再去找些资料来看看,不过印象中没 11/27 09:04
49F:→ Prochihua:看到过有跟您提醒的地方相关连资料,我会再试试看,谢谢 11/27 09:05
50F:推 johnpage:提示,form2 and form3 只是ㄧ种类别,资料格式ㄧ种,所 11/27 19:23
51F:→ johnpage:以使用上要new. 不是直接互叫。还有public的位置也错了 11/27 19:23
52F:→ Prochihua:To j兄:这两天又把以前爬过的文重爬了一次,觉得怪怪的 11/29 12:32
53F:→ Prochihua:form2、form3在一开始就已经Dim f3 As New Form3 11/29 12:33
54F:→ Prochihua:那使用的时候再new,不是又多一个form3出来? 11/29 12:34
55F:→ Prochihua:另外我检查了一下,要传值的textbox我有设成Public 11/29 12:35
56F:→ Prochihua:还是说您是建议我设一个Public的变数来供资料交换用吗? 11/29 12:37
57F:→ Prochihua:例如在form1加 Public MyValue2 As String之类的? 11/29 12:37