已有57人关注
企业QQ问题
发表在C#图书答疑 2011-06-13
是否精华
版块置顶:
如果添加控件需要添加事件吗?直接放进去就可以用了吗?如果添加事件代码是怎么写的?谢谢了!
分享到:
精彩评论 1
东方_mrkj
学分:0 LV1
2011-06-14
沙发
读者你好:
    关于添加事件分为以下两种情况:
    1、控件自身带有相关事件,这种情况右键单击控件,选择“属性菜单项”,在属性窗口的事件页中双击某个事件,就可以生成该事件对应的处理方法。
    2、自定义事件,请参考下面的说明:
    
    假定你要为自定义控件MyControl写自定义事件MyEvent,其中MyControl扩展自System.Windows.Forms.UserControl。以下是关键步骤:

1.声明公有的delegate,这里我们命名为MyEventHandler。MyEventHandler有两个参数。Object对象sender和MyEventArgs对象e。关于MyEventArgs我们将在后面定义。需要注意的是delegate必须声明在你的自定义控件之外。 
public delegate void MyEventHandler(object sender,MyEventArgs e); 
public class MyControl:UserControl 

    …… 

2.1中的MyEventArgs是这样一个对象,它持有由事件发生者传递给事件接收者的数据。MyEventArgs必须继承自System.EventArgs。这时的代码如下: 
public class MyEventArgs:System.EventArgs 

    …… 

public delegate void MyEventHandler(object sender,MyEventArgs e); 
public class MyControl:UserControl 

    …… 

需要在MyEventArgs类中写一些具体实现。这一点我们会在以后讲到。 


3.在自定义控件类中,声明一个事件,声明为MyEvent。 
public class MyEventArgs:System.EventArgs 

    …… 

public delegate void MyEventHandler(object sender,MyEventArgs e); 
public class MyControl:UserControl 

    public event MyEventHandler MyEvent; 
    …… 


4.在自定义控件类中,声明受保护的虚方法,命名规则是在事件名字的前面加上On。既然我们的事件命名为MyEvent,那么这个方法就叫做OnMyevent。OnMyevent方法有一个MyEventArgs类型的参数。这个方法用来生成事件。在c#中直接调用事件名字来生成事件。生成事件需要传递两个参数:事件发生者和传递给方法的参数MyEventArgs。 
public class MyEventArgs:System.EventArgs 

    …… 

public delegate void MyEventHandler(object sender,MyEventArgs e); 
public class MyControl:UserControl 

    public event MyEventHandler MyEvent; 
    protected virtual void OnMyEvent(MyEventArgs e) 
    { 
        MyEvent(this,e); 
    } 
    …… 


5.最后一步就是在自定义控件类中实际地调用OnMyEvent。
首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照