2015-06-03 51 views
1

我有一个2格式。 Form1打开Form2。单击一个值后,Form 2将该值发送到位于Form 1中的文本框。它是硬编码的,所以Form2内部明确声明Form1.txtbox.Text = "Whatever i clicked" Form2然后关闭,我现在坐在Form1上,但是txtbox.text没有从Form2接收到新值。将vb6格式设置为硬编码格式的实例

在即时窗口Form1.txtbox.text = "Whatever I clicked"是正常的,但是在Form1的上下文中的txtbox.text = ""是空的。

我打开Form1使用Forms.Add("Form1")现在有无论如何设置此实例的表格到硬编码实例吗?我想象错误的发生是因为Forms.Add("Form1")创建了该表单的一个实例,而Form1.show是实际的表单。无论如何要将这两个匹配成同一个对象?

+0

我会建议Form1以模态方式打开Form2 - > Form2隐藏自己当您单击关闭时,然后Form1从Form2中获取值。最后,Form1卸载Form2。 – jac

+0

是的Form1确实在模态中打开,但我认为它是因为我首先打开form1。 '设置ftemp = Forms.Add(“Form1)ftemp.show'与后面的'Form1.Show'相比,我可以明确地调用表单中的对象,它会改变,但前者不允许我做 – Byrd

+1

当你创建Form1时,你创建了两个东西:一个叫做Form1的类,你可以创建一个名为Form1的实例和一个预先声明的全局实例,你可以做一些类似于“Set Form1 = New Form1”的东西,但会变得有点愚蠢,或者也许更笨重的'Set Form1 = Forms.Add(“Form1”)'这是大约相同的事情。 – Bob77

回答

0

最好的解决方案是使用Bob77所说的并将其应用于表单。

当使用Forms.Add("Form1")方法,如果你要实现Set Form1 = Me中的Form_Load现在救我的参考是Form1中,这样当你使用Form1.Foo = "bar"在窗体2做出它直接改变那么它会工作加载Form1上。