初识 c# 事件机制 Form间通信示例

 MS把所有的工作都做好了 隐藏了大量有意思的东西
常用的事件在VS中已经有了  关于事件我们不需写一行代码
但是在很多时候我们也需要自定义事件 比如说Form间的通信

下面谈谈我对C#事件机制的认识

C#的事件(Event)是建立在委托(delegate 有人译作代表)的基础上的
委托是指向某个函数的指针,相当于C++中的函数指针
事件其实就是委托的一个实例
例如委托和事件可以这样声明
delegate void MyDelegate(); //这里委托的参数表要与指向的函数一致
event MyDelegate myEvent();

事件与响应的函数用+=链接

void Function()     //响应事件的函数 这里参数表要与委托的一致
{
    //事件响应
}
myEvent+=new MyDelegate(Function);    //事件连接

下面是我写的部分代码用来实现Form间的通信
AddMemberForm添加信息后通知更新DataGridView的数据

AddMemberForm:

namespace  MemberManage
{
    
public delegate void CallBack();   //为了方便各Form类访问 最好放在类外 命名空间中
    public partial class AddMemberForm : Form
    
{
        
//... ...
        public event CallBack MyEnvent;
        
private void buttonSubmit_Click(object sender, EventArgs e)
        
{
            
string memberId = this.textBox1.Text;
            
//... ...
            newMember.Add();
            
if (this.MyEnvent != null)    //为了防止异常 最好加上这么个判断
            {
                  
this.MyEnvent();
            }
             
        }

        
//... ...
    }

}


MainForm:

namespace  MemberManage
{
    
public partial class MainForm : Form
    
{
        
//... ...
         private void 添加会员ToolStripMenuItem_Click(object sender, EventArgs e)
        
{
            AddMemberForm amf 
= new AddMemberForm();
            amf.MyEnvent 
+= new CallBack(DataGridViewBind);
            amf.Show();
        }

           
private void DataGridViewBind()
        
{
            
this.dataGridView1.DataSource = Member.Details;
        }

        
//... ...
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值