C# 在WinForms窗体之间传递数据

C# 在WinForms窗体之间传递数据,c#,winforms,events,C#,Winforms,Events,我在我的项目中制作了一个二级表单,它可以从主表单获取数据,当单击按钮时,应该会将一些数据传递给主表单。 代码如下: Add.cs: private void button1_Click(object sender, EventArgs e) { main ma = new main(); ma.optionType = "add"; ma.optionName = txtNa

我在我的项目中制作了一个二级表单,它可以从主表单获取数据,当单击按钮时,应该会将一些数据传递给主表单。
代码如下:

Add.cs:

        private void button1_Click(object sender, EventArgs e)
        {
            main ma = new main();

                ma.optionType = "add";
                ma.optionName = txtName.Text;
                ma.optionURL = txtURL.Text;
                ma.optionInterval = "12";
                //What should I pass here?


            this.Close();
        }
main.cs:

  private string opt;// create a property
        public string optionType
        {
            get
            {
                return opt;
            }
            set
            {
                opt = value;
            }
        }
        private string opt2;// create a property
        public string optionName
        {
            get
            {
                return opt2;
            }
            set
            {
                opt2 = value;
            }
        }
        private string opt3;// create a property
        public string optionURL
        {
            get
            {
                return opt3;
            }
            set
            {
                opt3 = value;
            }
        }
        private string opt4;// create a property
        public string optionInterval
        {
            get
            {
                return opt4;
            }
            set
            {
                opt4 = value;
            }
        }

我的问题是,在单击按钮1(在add.cs中)后,我不知道何时尝试从add.cs获取数据。我应该用什么事件检查数据是否来了?

如果您需要在关闭子窗体之前了解更改的值,自定义事件将让您优雅地通知父窗体

这里有一个关于C语言中的委托和事件的很棒的教程#

子窗体实例化后,父窗体将注册以从子窗体接收一个或多个自定义事件(根据需要)


另一种方法是将对父窗体的引用传递到子窗体中,以便子窗体可以调用父窗体的函数或属性来通知更改。但是,这种方法会在两种形式之间产生紧密耦合,因此不鼓励使用。

我刚刚将其更改为:
add.cs:

 public string optionType { get; set; }
 public string optionName { get; set; }
 public string optionURL { get; set; }
 public string optionInterval { get; set; }
 public int yCoord { get; set; }

如果你自己回答了,请随意发布答案,它可能会帮助其他人。