c#_两个WIN程序窗口间传递参数的方法【转】

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

方法一:

C#中没有了像中的全局变量,那么我们如何实现在不同的页面间传递参数呢?

下面举例说明如何实现这一功能.

1.新建一个项目.

2.在该工程中添加一个窗体Form1.

3.在该窗体中定义静态型字符串变量myTestStr1:

public static string myTestStr1="";

4.在该窗体的构造函数中对该变量进行赋值,并为该窗体类添加属性GetStrValue.

public Form_Form1()

{

InitializeComponent();

myTestStr1="Hello!";

}

public string GetStrValue

{

get

{

return myTestStr1;

}

set

{

myTestStr1=value;

}

}

5.在该工程中另添加一个窗体Form2.

6.在Form1窗体上添加一个button按钮(name:but_Test);

7.在Form1窗体的but_Test_Click 事件中添加以下代码:

private void but_Test_Click(object sender, System.EventArgs e)

{

Form2 frm1=new Form2();

frm1.ShowDialog(this) ;

frm1.Close();

}

8.在Form2窗体上添加一个button按钮(name:but_Yes);

9.在Form1窗体的but_Yes_Click 事件中添加以下代码:

private void but_Yes_Click(object sender, System.EventArgs e)

{

MessageBox.Show (Form_Form1.myTestStr1 ); //直接访问. 显示.结果:" Hello!"

Form_Form1 frm2=new Form_Form1();

frm2.GetStrValue ="How do you do?"; //生成一个新的实例对该静态变量进行操作(修改该静态变量的值).

MessageBox.Show (frm2.GetStrValue ); //通过该实例的内部成员对它进行访问 .显示.结果: How do you do?"

MessageBox.Show (Form_Form1.myTestStr1 ); //直接访问. 显示.结果:" How do you do?"

}

方法二:

进入VS2005后,大家可以发现子窗体操作父窗体不能沿用2003下的方法:把父窗体的空间访问属性由private改为public.IDE已经把控件声明这部分代码隐藏了,所以只有采用更加对象一点的方法。

父窗体与子窗体间的参数传递我采用的步骤如下:

1 父窗体中声明一个静态的父窗体类型的临时对象

public static frmFather frmFatherTemp;

2 父窗体构造函数中对该变量赋值

public frmFather()

{

InitializeComponent();

frmFatherTemp = this;

}

3 把要传递的参数设置为父窗体的一个属性,并设置访问器。访问其的set方法中进行了参数与父窗体控件绑定的操作。

private string testValue;

public string TestValue

{

get

{

return testValue;

}

set

{

this.testValue = value;

this.txtFather.Text = value;

}

}

4 父窗体参数传递事件中对要传递的参数赋值,并打开子窗体。父窗体的工作到此结束。

this.TestValue = this.txtFather.Text;

frmSon frm = new frmSon();

frm.ShowDialog();

5 子窗体构造函数中设置传递参数与子窗体控件的绑定操作

public frmSon()

{

InitializeComponent();

this.txtSon.Text = frmFather.frmFatherTemp.TestValue;

}

6 子窗体回传事件中,对父窗体的临时对象的该参数属性赋值

private void btnSon_Click(object sender, EventArgs e)

{

frmFather.frmFatherTemp.TestValue = this.txtSon.Text;

this.Close();

}

ok。一切搞定!

全部代码如下:

frmFather.cs

using System;

using System.Collections.Generic;

using ponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace winFormParameterPass

{

public partial class frmFather : Form

{

相关文档
最新文档