在c#的winfrom中有些控件没有我想要的事件,因此我想要自定义某些控件的事件,这样的话该如何用代码来实现呢?例如,我想自定义一个button的click事件btn_definition,而不去用它默认的方法,这个该如何实现呢?
这个例子举的有点问题,不好意思,我也一时想不出有哪些好的例子,请高手把他理解成一类问题吧。谢谢了。

解决方案 »

  1.   

    http://www.cnblogs.com/jyk/archive/2008/07/15/1243054.html
    http://www.cnblogs.com/yanyangtian/archive/2008/12/17/1265466.html
      

  2.   

    初始化界面的时候,加上这一句:this.btn_definition+=new System.EventHandler(event_name);试试看,event_name是你自己写的事件
      

  3.   

    你随便在网上搜索以下C# event 的实现,很简单的!
      

  4.   

    public event EventHandle Youreventname;
    in your functionif(Youreventname!=null)
    Youreventname(object,object);
      

  5.   

    不太明白你的意思按你所描述的需求,如下代码就可以解决问题public class MyButton : Button
    {
        protected override void OnClick(EventArgs e)
            {
                //这里处理你自己的代码
                base.OnClick(e);
            }
    }
      

  6.   

    还有,你是没有办法去控制button的点击事件的,除非你用钩子。就是说不用钩子的话,button的点击事件必然发生,但你可以在类里自己定义一个点击事件处理函数,这样也能达到你的目的,比如public class MyButton : Button 

        public MyButton
       {
          this.Click +=new EventHandler(SelfClick);
       }
       private void SelfClick( object sender, EventArgs e)
       {    }
    }
      

  7.   

    界面,在Button控件的OnClick里写自己的事件名称~~后台。。
    Button控件.Click += new System.EventHandler(事件名称);
      

  8.   

    新建用户控件继承你需要的那个最相近功能的控件,如果要添加事件,需要通过代理委托实现
    如:
    public event SelectionChangedEventHandler SelectionChanged; //选择事件
    private void comboBox1_SelectedIndexChanged(object sender, System.EventArgs e)
            {
                if (SelectionChanged != null)
                {
                    SelectionChangedEventArgs E = new SelectionChangedEventArgs(comboBox1.Text);
                    SelectionChanged(this, E);
                }
    剩下的就是在你需要的窗体中注册这个事件
    你定义的控件.SelectionChanged += new SelectionChangedEventHandler(你定义的控件_SelectionChanged);
    Good Luck!!!