问题描述
写了自定义控件,其中有个ButtonButtonFrist,想问下ButtonFristClick事件如何触发自定义控件ButtonClick事件。写了以下。//1.先定义ButtonClick类publicclassButtonClickEventArgs:EventArgs{privatestringas_PageType;publicstringPageType{get{returnas_PageType;}}publicButtonClickEventArgs(stringPageType){this.as_PageType=PageType;}}//2、定义一个委托publicdelegatevoidButtonClickEventHandler(objectserder,ButtonClickEventArgse);//3、定义一个事件publiceventButtonClickEventHandlerButtonClick;//4、引发事件这“引发事件”怎样写?还有和ButtonFrist的Click事件如何关联,谢谢大神们。
解决方案
解决方案二:
看看msdn的讲解吧很详细https://msdn.microsoft.com/zh-cn/library/edzehd2t%28v=vs.110%29.aspx
解决方案三:
1.在自定义控件中双击一下按钮ButtonFrist生成此按钮的单击事件,在这个按钮的单击事件中引发你写的自定义事件触发事件前先判断ButtonClick不等于nullif(ButtonClick!=null){ButtonClick(this,abc);//abc为ButtonClickEventArgs类的实例需在上面new出来//这里其实是调用了下面说的方法,不同的窗体使用这个自定义控件可以实现不同的方法处理,相当于在这里挖了一个坑.//紧接着下面就可以根据实例中PageType的不同值做相应的处理.//这里其实也体现了多态.如有的时候该值从界面上控件中得到,有时又是通过计算得到.通过不同的方法来实现}2.事件中方法的绑定当自定义控件生成好之后将其添加到窗体中,在窗体的Load事件中通过ButtonClick+=(两下tab)为自定义控件的ButtonClick事件自动生成方法.然后在生成的方法中进行处理,可以在这里为PageType设置不同的值运行时生成方法中的第二个参数实例其实就是自定义窗体中的abc
解决方案四:
自定义按钮控件对当前按钮重绘privatevoidTransparencyButton_Paint(objectsender,PaintEventArgse){this.BackColor=Color.Transparent;//使当前控件透明sm=e.Graphics.SmoothingMode;//设置呈现质量ColorshineColor=Color.Black;Rectanglerect2=newRectangle(0,0,this.Width,this.Height);//设置绘制按钮的矩形区域Rectanglerect1=newRectangle(0,this.Height/2,this.Width,this.Height/2);//设置绘制按钮下半部的矩形区域if(this.CTransparence==0)//如果按钮的透明度为0{CobOblongDown(rect2,e.Graphics);//绘制按扭的背景CobOblong(rect2,e.Graphics,this.ShineColor);//绘制按扭的背景}else{if(this.CTransparence>0)//如果按钮的透明度不为0{CobOblongDown(rect2,e.Graphics);//绘制按扭的背景for(inti=0;i<CTransparence;i++){CobOblong(rect2,e.Graphics,this.ShineColor);//绘制按扭的背景颜色}//codego.net/}}inttem_n=(int)(this.CTransparence/3);//获取一个值,用于设置下半部按钮的颜色深度if(tem_n==0)//如果为0CobAjar(rect1,e.Graphics,this.ShineColor);//绘制按扭的下半部背景else{if(tem_n>0)//如果不为0{for(inti=0;i<tem_n;i++)//加深下部按钮的颜色{CobAjar(rect1,e.Graphics,this.ShineColor);//绘制按扭的下半部背景颜色}}}CobOblong(rect2,e.Graphics,this.UndersideShine);//设置下半部按钮的光泽度if(pub_ButtonClick==false)//判断按钮是否按下(false为按下){CobOblongDown(rect2,e.Graphics);//绘制按扭的背景}if(this.NText.Length>0)//如果Text属性中有值ProtractText(e.Graphics);//绘制透明按钮的文本信息}