C#使用Form2中文本框的属性

C#使用Form2中文本框的属性,c#,object,components,C#,Object,Components,在C#中,我开发了一个应用程序,但我得到了一些错误 在我的项目中有两个表格,表格1和表格2。 但是当ı想从Form2调用任何对象属性时,不会显示并调用ıt。你怎么能做这些?我试过了,但没有成功 表单2上有一个文本框,并且希望使用表单1中的属性 下面的代码是我想要的 Messagebox.Show(Form2.textBox1.Text.ToString()); 首先,Form1真的不应该了解Form2的内部控制。文本框不应该公开。而是在Form2上创建一个属性,以公开所需的信息: public

在C#中,我开发了一个应用程序,但我得到了一些错误 在我的项目中有两个表格,表格1和表格2。 但是当ı想从Form2调用任何对象属性时,不会显示并调用ıt。你怎么能做这些?我试过了,但没有成功

表单2上有一个文本框,并且希望使用表单1中的属性

下面的代码是我想要的

Messagebox.Show(Form2.textBox1.Text.ToString());

首先,
Form1
真的不应该了解
Form2
的内部控制。文本框不应该公开。而是在
Form2
上创建一个属性,以公开所需的信息:

public class Form2 : Form
{
    private Textbox textbox1;

    public string SomeText //TODO replace with meaningful name
    {
        get { return textbox1.Text; }
    }
}
接下来,您可能正在创建表单的实例来显示它。您可以通过该实例访问该属性:

Form2 childForm = new Form2();

childForm.ShowDialog();

MessageBox.Show(childForm.SomeText);
在某些情况下,您可能还需要将
Form2
的实例存储为
Form1
的实例字段,而不仅仅是局部变量:

private Form2 childForm = new Form2();

private void SomeMethod()
{
    childForm.Show();
}

private void SomeOtherMethod()
{
    MessageBox.Show(childForm.SomeText);
}
试一试 表格一

   public string _parameter;
   public Form1()
    {
        InitializeComponent();

     }

    public void form2_show_click(object sender, EventArgs e)
    {
       form2 frm = new form2();
       frm.ShowDialog();
        _parameter = frm.parameter;
     }

  form2

   public string parameter;
   public void form1_show_click(object sender, EventArgs e)
    {
       parameter = textBox1.Text;
       this.DialogResult = System.Windows.Forms.DialogResult.OK;
     }

你有在Form1上使用的Form2实例吗?在窗体的构造函数中将textbox内容作为参数传递。这甚至不应该编译,因为textbox不是静态的(至少我希望不是;它不应该是静态的)。它也不应该公开;您应该添加一个只公开文本的属性。@kostasch
Form2
可能是子表单,而不是父表单,因此他是创建实例的人;他只需要抓住它。我到底该怎么办呢?