在asp.net用户控件中提升和事件的优势是什么?
答案 0 :(得分:5)
允许其他人在您执行某些操作时执行代码,而无需轮询您的状态以了解您已执行的操作。
答案 1 :(得分:2)
引发事件的目的通常是告知代码中已经发生或即将发生的事情,以便允许程序的其他部分对此作出反应。通常,事件的设计方式使得引发事件的代码以相同的方式工作,无论是否附加任何侦听器(事件处理程序)。
一个例子是按钮的点击事件。当用户单击该按钮时,该按钮将引发单击事件,这将允许任何附加的事件处理程序执行某些操作。但是如果没有附加事件处理程序,按钮就不会改变它的行为(只是不会发生任何事情)。
虽然提出大多数事件是为了告知发生了什么,但是为了告知即将发生,会引发一些事件。有时这些事件使用具有读/写属性的EventArgs
类(与EventArgs
类中更常见的只读属性相反),这允许事件侦听器将数据传递回事件引发代码。我无法从脑海中想出任何好的asp.net示例,但在winforms世界中,典型的例子是Form.Closing
事件,事件处理程序可以设置e.Cancel = true
阻止表单关闭。
因此,在用户控件中,只要外部代码(通常是页面)对控件中发生的事情做出反应,就可以引发事件。
答案 2 :(得分:0)
要添加到此处已有的其他答案,让我用一个类比来解释事件。
假设您希望每天都收到报纸。您打电话给报社公司,告知他们您希望收到他们可能会打印的任何新报纸 - 您“订阅”报纸。报纸送货人员保留了一份订户人员名单 - 应该收到报纸的人。每天打印报纸时,如果您在订阅者列表中,您将收到一份报纸。
现在,假设你有一个对象 - 例如一个按钮。假设您想知道何时按下该按钮。您“订阅”事件 - 特别是“OnClick”或“OnPressed”或以您的使用语言命名的任何内容。每当用户单击该按钮时,该按钮将遍历其订户列表,并调用提供给每个订户的功能。这些是'事件处理程序'。这些函数是订阅者在事件发生时想要调用的函数。在英语中,订阅者可能会说“当您按下时,请调用MyOnClick()函数。”
在许多编程范例中使用事件来处理复杂性 - 事件不需要了解事件处理程序,反之亦然。这允许更松散的耦合,以及更模块化,可重用的代码。
我建议您阅读Observer Pattern,因为这是事件和事件处理程序的基础。