C#中跨窗体操作(1)--事件

本文详细介绍了在C#应用中如何通过事件处理和委托实现窗口间交互,包括声明事件、编写按钮单击事件及事件处理函数的具体步骤。重点突出了委托和事件的区别,以及它们在跨窗体操作中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


在应用C#过程中,经常会出现通过“窗口2”来处理“窗口1”上的控件和显示内容等。可以通过事件的处理方式来完成,具体步骤如下:

1、在“窗体2”中声明事件

   public delegate void Change();
        public event Change myChangeevent;

2、编写按钮单击事件

      myChangeevent();//执行事件

3、在“窗体1”中声明“窗体2”的事件,并编写事件处理函数来处理“窗体1”的控件和内容

  按钮单击函数  

     Form2 f = new Form2();
            f.Show();
            f.myChangeevent += new Form2.Change(f_myChangeevent);

  事件处理函数

    void f_myChangeevent()
        {
            //throw new NotImplementedException();
            textBox1.Text = "事件执行成功";
        }

完整的程序代码:

  Form1:

 1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Linq;
7 using System.Text;
8 using System.Windows.Forms;
9
10 namespace Test跨窗体
11 {
12 public partial class Form1 : Form
13 {
14 public Form1()
15 {
16 InitializeComponent();
17 }
18
19 private void button1_Click(object sender, EventArgs e)
20 {
21 Form2 f = new Form2();
22 f.Show();
23 f.myChangeevent += new Form2.Change(f_myChangeevent);
24 }void f_myChangeevent()
25 {
26 //throw new NotImplementedException();
27 textBox1.Text = "事件执行成功";
28 }
29 }
30 }

Form2:

 1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Linq;
7 using System.Text;
8 using System.Windows.Forms;
9
10 namespace Test跨窗体
11 {
12 public partial class Form2 : Form
13 {
14 public Form2()
15 {
16 InitializeComponent();
17 }
18 public delegate void Change();
19 public event Change myChangeevent;
20 public Change myChange;
21 private void button1_Click(object sender, EventArgs e)
22 {
23 //myChange = new Change(Print);
24 //this.Invoke(myChange);//执行委托
25 myChangeevent();//执行事件
26 }
27 private void Print()
28 {
29 button1.Text = "委托执行";
30 }
31 }
32 }

委托和事件的最大区别在于:委托可以在任意时刻调用处理函数,而事件只能在固定的出发了当前事件时才能调用。

转载于:https://www.cnblogs.com/suifengpiaoshan/archive/2012/02/29/2373161.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值