c#_两个WIN程序窗口间传递参数的方法【转】
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
{