Winforms C将文本从Form2文本框发送到Form1文本框

Winforms C将文本从Form2文本框发送到Form1文本框,winforms,textbox,c#,Winforms,Textbox,C#,我需要一些帮助,我想将文本从Form2.cs中的一个文本框设置为Form1.cs中的另一个文本框,但我一直收到以下错误: Error 2 An object reference is required for the non-static field, method, or property. 我用c语言编写代码,但我在互联网上找不到它。如何做到这一点?您必须提供Form2到Form1的距离。例如,您可以在构造函数中传递它,如下所示: public Form2(Form1 frm) 然后你可

我需要一些帮助,我想将文本从Form2.cs中的一个文本框设置为Form1.cs中的另一个文本框,但我一直收到以下错误:

Error 2 An object reference is required for the non-static field, method, or property.

我用c语言编写代码,但我在互联网上找不到它。如何做到这一点?

您必须提供Form2到Form1的距离。例如,您可以在构造函数中传递它,如下所示:

public Form2(Form1 frm)
然后你可以称之为这样的东西

this.TextBox1.Text = frm.TextBox1.Text

我只根据你的错误代码写这个答案

您尝试访问非静态方法,而不使用任何属于它的类对象实例。例如此代码将失败。 但是这个代码是有效的

class Program
{
   public static void Main()
   {
      Program p = new Program();
      p.WriteMethod();
   }
   public void WriteMethod()
   {
      Console.Writeline("Succes!");
   } 
}

希望您能理解要点。

您的案例太简单了,为了在类之间交换数据,您可以做很多事情


为什么不尝试将数据保存到另一个静态类或单例类中

请发布您的代码。您可以从form2中调用form1的对象,并从构造函数中传递一些值,并根据需要更改值。您的两个表单的实例都存在吗?还要确保目标控件修饰符是公共的,而不是默认为私有的。@MatthewAllen,而您的业务代码可能会公开尝试将文本框文本设置为适当的通用文本,以便在此处发布。
//this code worked for me
//in form2 put following code prevent form from opening multiple times  
public partial class Form2 : Form
    {
        public Form2()
        {
             InitializeComponent();
        }
        private static Form2 Instance;
        public static Form2 GetInstance()
            {
                if (Instance ==null || Instance.IsDisposed)
           {
                Instance = new Form2();
            }
            else
            {
                Instance.BringToFront();
            }
                 return Instance;
         }

 // in form1

 public partial class Form1 : Form
    {
        public Form1()
        {
             InitializeComponent();
        }


        private void Button2_Click(object sender, EventArgs e)
        {
            Form2 form2 = Form2.GetInstance();
            form2.textBox1.Text = textBox1.Text;
            form2.Show();
        }
    }
//this code worked for me
//in form2 put following code prevent form from opening multiple times  
public partial class Form2 : Form
    {
        public Form2()
        {
             InitializeComponent();
        }
        private static Form2 Instance;
        public static Form2 GetInstance()
            {
                if (Instance ==null || Instance.IsDisposed)
           {
                Instance = new Form2();
            }
            else
            {
                Instance.BringToFront();
            }
                 return Instance;
         }

 // in form1

 public partial class Form1 : Form
    {
        public Form1()
        {
             InitializeComponent();
        }


        private void Button2_Click(object sender, EventArgs e)
        {
            Form2 form2 = Form2.GetInstance();
            form2.textBox1.Text = textBox1.Text;
            form2.Show();
        }
    }