程序开发 > C# > Winform > 正文

C#窗体传递参数(父窗体向子窗体、子窗体向父窗体)

亮术网 2020-08-28 本网原创

在 Winform 开发中,有时父窗体要向子窗体传递参数,有时子窗体执行结束后要把某些数据传回父窗体,真可谓是礼尚往来,你传给我,我不能不传给你。

父窗体向子窗体传递参数十分简单,像普通的方法一样传递;子窗体向父窗体传递就有点麻烦,需要多定义一些变量,不过传递方法了有好几种。下面分别分享父窗体向子窗体传递参数的实例和子窗体向父窗体传递参数的实例。

 

一、C#窗体传递参数:父窗体向子窗体

假如显示父窗体时也显示子窗体,父窗体代码:

private void Form1_Load(object sender, EventArgs e)
  {
    string userName = "testuser";
    SubForm sf = new SubForm(userName);
    sf.Show();
  }

 

子窗体代码:

private string userName;

public SubForm(string _UserName)
  {
    userName = _UserName;
    InitializeComponent();
  }

 

 

二、C#窗体传递参数:子窗体向父窗体

由于子窗体不能创建父窗体实例,所以不能用上面的方法,可以在子窗体中定义父窗体,在父窗体调用子窗体时用父窗体初始化子窗体中定义的父窗体对象,子窗体执行结束把数据赋给父窗体的成员,代码如下:

父窗体代码:

public string param;

private void btnParentToSubForm_Click(object sender, EventArgs e)
  {
    SubForm sf = new SubForm(this);
    sf.ShowDialog();
    if (sf.DialogResult == DialogResult.OK)
    {
      MessageBox.Show(param);
    }
  }

 

子窗体代码:

private Form1 f1;
  private string subParam;

public SubForm(Form1 f)
  {
    f1 = f;
    InitializeComponent();
  }

private void button1_Click(object sender, EventArgs e)
  {
    this.subParam = "传递给父窗体";
    f1.param = this.subParam;
    this.DialogResult = DialogResult.OK;
  }

除了这个方法,还可以采用定义全局变量的方法,也可以用事件实现,不过要麻烦一些。

 

以上代码都通过 Visual Studio 2010 测试,根据实际应用要求稍加改动就可以用。