如何设置父级以访问vb.net中的另一个表单?

时间:2017-06-14 18:08:31

标签: vb.net

我有两种形式:

Input.vbWriter.vb

Input设置为默认表单时,我能够执行以下操作:

在Writer.vb

Input.mymessage = texter.Text

texter是一个文本框。

由于我需要将默认表单更改为另一个表单,因此它不再起作用。 如何解决?是否有任何“设置父级”或“Dim Input as Input.Forms.all”方式让它再次运行?

已经尝试Dim Input as new Input

修改 我找到了使用CType(Me.ParentForm, Input).mymessage = texter.Text的方法,但Writer.Parent = Me对我不起作用:/

2 个答案:

答案 0 :(得分:2)

请记住,您拥有对象 definitions (类),这些类的对象实例,以及对这些实例具有引用的变量。< / p>

人们往往会忘记这些东西也适用于表格。

Input被设置为默认表单时,VB.Net为您提供了表单的默认实例,以及一个特殊的全局变量,它引用了与该类相同的名称。因此,代码中的名称Writer可能是两种不同的东西之一,具体取决于上下文:类类型,或该类类型的默认实例的特殊变量。

既然Writer不是默认表单,您就不再使用该默认表单了。当您显示表单时,您将创建自己的实例。 Writer形式也是如此。您有一个Input类,但这只是您在某处创建的类实例的定义。您需要为#include <stdio.h> void squeeze(char *s, int c); int main(void){ char s[]="kyriacos"; squeeze(s,'c'); printf("the new kyriacos is %s",s); } void squeeze(char *s, int c){ int i,j; for(i=j=0; *(s+i)!='\0';i++){//the error is here //u need to access the value at address using * operator instead u were //accessing only addresses if(*(s+i)!=c){ *(s+j)=*(s+i); j++; } } *(s+j)='\0'; } 表单的此实例提供对已创建的{{1}}表单实例的引用。

您使用与任何其他.Net类处理对象引用的方式相同。

答案 1 :(得分:0)

当转到另一个表单时,我使用Public sub而不是使用“Private Sub”,它将该表单中的所有内容共享给其他任何尝试使用它的内容。