本文主要是介绍由委托说明事件的由来2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
由于以上两个不足,我们可以使用事件来解决问题。
1、即在用户控件的代码如下:
namespace WindowsFormsApplication1
{
public delegate void OnShowInfoDelegate();//定义委托类型
public partial class EventUserControl : UserControl
{
public event ShowInfoDelegate On_showinfo;//event是事件的关键字,在声明实例时使用关键字定义事件。
public EventUserControl()
{
InitializeComponent();
}
int count = 0;
private void button1_Click(object sender, EventArgs e)
{
count++;
if (count == 3)
{
On_showinfo();
count = 0;
}
}
}
}
那么在form窗体加载的时候也要为委托指定方法:
private void Form1_Load(object sender, EventArgs e)
{
this.eventUserControl1.On_showinfo += new ShowInfoDelegate(eventUserControl1_On_showinfo);
}
与委托指定方法不同的是,此处只能通过+=来绑定方法,写好+=后双击Tab键,即可将所需的方法写出。然后修改方法中的内容,
void eventUserControl1_On_showinfo()
{
MessageBox.Show("您连续三次点击了form1按钮");
}
form2窗体中的代码一样。
//事件也是可以有多个的,可以为一个控件注册多个事件
this.eventUserControl1.On_showinfo += new ShowInfoDelegate(Button_Click);
this.eventUserControl1.On_showinfo += new ShowInfoDelegate(ShowInFo);
this.eventUserControl1.On_showinfo += new ShowInfoDelegate(ShowInFo1);
如果再添加一个button,代码如下:
private void button1_Click(object sender, EventArgs e)
{
//事件只能被注册,不能像委托一样直接调用,所以无法再外部直接调用事件。事件一定是被触发的,不能是被显示调用的。
//this.eventUserControl1.On_showinfo(); (这样写会报错,因为事件只能写在+=或-=的左边)
//可以使用-=删除控件的某个事件,但是不能使用=覆盖控件现有的所有事件。
this.eventUserControl1.On_showinfo -= ShowInFo1;
}
这篇关于由委托说明事件的由来2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!