如何从form1获取文本

时间:2010-01-15 20:33:32

标签: .net vb.net

我有2个表格。在form1中,我有一个名为TextBox1的文本框 在Form2中,我有另一个名为TextBox2的文本框。

我想将textbox1中的文本发送到textbox2,我试过了。

TextBox2.Text = Form1.TextBox1.Text

我是否需要更改第一个文本框?

4 个答案:

答案 0 :(得分:2)

默认情况下,Windows窗体中的控件不公开。您需要更改form1上TextBox的声明以明确地将其公开或向form1添加公共属性以获取和设置文本框文本(首选)。

答案 1 :(得分:1)

您需要引用表单的实例。 Form1就是这个类。

答案 2 :(得分:1)

正如Joel所说,你需要公开TextBox控件,默认情况下它们是Friend,允许同一个程序集(VB.NET Project)中的其他类/控件/表单访问控制但不是大会外的类/控制/表格。

可以通过GUI Designer或生成的代码以两种方式进行更改。

要在设计师中进行更改:

  • 选择TextBox
  • 转到“属性”窗口(或右键单击并选择“属性”)
  • 将“修改器”属性更改为“公共”

要更改生成的代码,您需要:

  • 在解决方案资源管理器中启用“显示所有文件”
  • 右键单击Form的.Designer.vb文件,然后选择“查看代码”
  • 找到TextBox的声明,如下所示:

    Friend WithEvents TextBox1 As Windows.Forms.TextBox

将“朋友”改为“公开”

Public WithEvents TextBox1 As Windows.Forms.TextBox

在旁注 这样可以正常工作,但让控件“进入”其他控件来获取/设置值通常不是一个好习惯。我知道你是.net的新手,所以我将不再提供详细信息,但是一旦你觉得你已经解决了最初的学习曲线,你就会想要阅读MVC / MVP / MVVM / MV *模式背后的想法 - - 他们专注于逻辑和UI的分离

答案 3 :(得分:0)

正如我已经在 this 帖子中回复了您的所有代码。

您不应直接访问Form2.TextBox ,而是将文本框文本作为参数传递给构造函数或通过第二种形式的公共字段(或属性)传递。

当然,如果您 (并且 具有必要的VB.NET最低知识 以便修改Form2代码),这肯定有效。

如果没有,您应该声明Form2的唯一(在VB.NET中共享)实例,即使Public Shared myUniqueForm2 as Form2通过myUniqueForm2.TextBox2

访问TextBox2

如果帖子仍然不清楚,你应该停止向人们询问并阅读一些关于面向对象编程(OOP)和VB.NET的简短基础文章。

以示例 this one this one 为例。 很多关于VB.NET的教程你也可以找到 here