笔记—————C#窗体间数据的传递(事件)

C#窗体间数据的传递(事件)

窗体间数据的传递,顾名思义至少两个窗体才能进行数据的传递。以下内容为两个窗体间数据的穿的传递。

(一) Form1(没有实例化的父窗体) 窗体向下一个窗体(Form2  用new运算子申请出来的实例对象,子窗体)进行数据的传递。这一个比较简单:在Form2 中声明一个公有的数据成员,在Form2 展示之前对实例Form2 的数据成员进行赋值即可。

(二)Form2 窗向Form1 窗体进行数据的传递:需要用到事件(委托)。

以例题为例:

  
该程序的执行过程是这样的:在第一个窗体输入第一个加数,点击按钮后在第二个窗体输入第二个加数再点击按钮,进行运算并把结果返回到第一个窗体。
首先:运用方法一将第一个加数传到第二个窗体,通过form2 的共有的成员函数。
/**
 * Form1 的点击事件
 */
private void button1_Click(object sender, EventArgs e)
{
	Form2 form2 = new Form2();//创建一个Form2 的实例对象
	form2.addNumber1 = Convert.ToDouble(textBox1.Text);//Form1——>Form2实现参数的传递
	//form2.Send += new Form2.SendNumber(Add);//关键(触发事件)
	form2.Show();
}

 
其次:关键的一步就是将另一个加数和结果传到第一个窗体,两个参数传递的类型一样,需要运用事件,将两个变量作为事件函数的两个参数。
在Form2 中:
//委托的定义(一)
public delegate void SendNumber(double  a,double b);

//实例化对象(二)
public event SendNumber Send;
// 加数变量
public double addNumber1;

/**
 * Form2 的点击事件
 */ 
private void button1_Click(object sender, EventArgs e)
{
    textBox2.Text = (Convert.ToDouble(textBox1.Text) + addNumber1).ToString();//将计算结果赋值给Form2 的结果TextBox
    Send(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox1.Text)+addNumber1);//触发事件(四)
    MessageBox.Show("延时5秒","提示");
    YanShi();
    //this.Show();
    this.Close();
}

在Form1中:
 

/**
 * Form点击事件
 */
private void button1_Click(object sender, EventArgs e)
{
    Form2 form2 = new Form2();
    
    //Form1——>Form2
    form2.addNumber1 = Convert.ToDouble(textBox1.Text);
    
    //关键(关联事件)(三)Form2.SendNumber
    form2.Send += new Form2.SendNumber(Add);
    form2.Show();
}


/**
 * 展示数据
 */ 
public void Add ( double addNumber ,double aluter) //Form2 ——>Form1
{
    textBox2.Text = addNumber.ToString();
    textBox3.Text = aluter.ToString();
}
事件基本分为四步:
1、声明委托(Form2 )
2、实例化委托对象(Form2 )
3、事件关联(Form1 )关联Form1 的共有的成员函数,将两个参数传递到Form1 中
4、触发事件(Form2 )

 
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值