2017-01-19 87 views
0

我是vb.net的新手,所以请原谅我,如果这是一个简单的问题。从Form2访问Form1上的文本框

我创建了一个类库项目,它包含两个窗体Form1和Form2。主类库有事件来打开Form1。 Form1上的一个按钮启动Form2。大部分代码都在Form1中,如果我可以帮助它,我不想更改它。

我想要做的是访问Form2中的一个子Form2。该子组正在更改Form 1上的文本框的值。编译该项目时,我没有收到任何错误,但是,没有任何反应。

下面是一个例子

Form1中:

Public Sub test() 

    Me.Panel1.Controls("Textbox1").Text = "Test" 

End Sub 

窗体2:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 

    Dim MainForm As New Form1 
    Me.Close() 
    MainForm.test() 


End Sub 

不要太赶上上我如何建造出来,我试图约20个不同的事情,这是我现在的地方。

我已经尝试在子测试()中定义Form1。我曾尝试设置子测试()共享。我试图关闭Form2并激活Form1。我试图将文本框中的修饰符属性更改为public。我试图让Form1成为父母,Form2成为孩子(我真的不太了解MDI)。所有这些结果最终在一个将编译但不会给我任何结果的项目。我的代码访问子就好了,它不会访问文本框的文本属性。

任何建议都会有帮助。我试图以一种可以循环浏览所有文本框的方式访问文本框。例如:Me.Panel.Controls(“Textbox”& i).Text =“Something”。如果可以的话,我也想保留Form1中的子类。

任何建议将是伟大的!

+0

你为什么要打电话给'Form2'的'test'方法?这有什么重要的? – Bugs

+0

访问“Panel”上的所有'TextBoxes'。 '对于每个t在Panel.Controls.OfType(TextBox)()'中,那么你可以设置't'的属性。 – Bugs

回答

0

您正在创建一个全新的Form1Form2,这就是问题所在。

只需使用:

Call Form1.test()

顺便说一句,我认为这个代码在子是设置文本更简单的方法:

Panel1.TextBox1.Text = "Test"