【问题标题】:Accessing text box on Form1 from Form2从 Form2 访问 Form1 上的文本框
【发布时间】:2017-01-19 13:45:22
【问题描述】:

我是 vb.net 的新手,如果这是一个简单的问题,请原谅我。

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

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

这是一个例子

表格1:

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 种不同的东西,这就是我现在所处的位置。

我尝试在子 test() 中定义 Form1。我尝试将 sub test() 设置为共享。我尝试关闭 Form2 并激活 Form1。我尝试将文本框上的修饰符属性更改为公共。我曾尝试将 Form1 设为父级,将 Form2 设为子级(老实说,我不太了解 MDI)。所有这些结果最终都会出现在一个可以编译但不会给我任何结果的项目中。我的代码可以很好地访问 sub,它不会访问文本框的 text 属性。

任何建议都会有所帮助。我正在尝试以一种可以遍历所有文本框的方式访问文本框。例如:Me.Panel.Controls("Textbox" & i).Text = "Something"。如果可以的话,我还想将 sub 保留在 Form1 的类中。

任何建议都会很棒!

【问题讨论】:

  • 为什么要从Form2调用方法test?这有什么重要的?
  • 访问您的Panel 上的所有TextBoxesFor Each t In Panel.Controls.OfType(Of TextBox)() 然后你可以设置t 的属性。

标签: vb.net winforms visual-studio-2015


【解决方案1】:

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

只需使用:

Call Form1.test()

顺便说一句,我认为sub中的这段代码是设置文本的一种更简单的方法:

Panel1.TextBox1.Text = "Test"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多