2009-08-23 54 views
1

在asp.net用户控件中提升和事件的优点是什么?举办活动的目的是什么?

+4

如果silky的回答回答了您的问题,您应该将其标记为已接受(表决下的复选标记) – 2009-08-23 22:49:15

回答

5

允许别人在你做某事时执行代码,而不必轮询你的状态来知道你做了什么。

+0

您能提供一个示例吗? – Frank 2009-08-23 22:23:00

+0

一件事? “OnLoad”是ASP.NET中的“页面”事件。你在说什么语言?你想要什么样的例子? – 2009-08-23 22:29:45

+0

所以这个页面引发了一个OnLoad事件。这会是一个正确的词组吗? – Frank 2009-08-23 22:37:38

2

引发事件的目的通常是告知代码中发生或即将发生的事情,以便让程序的其他部分对此作出反应。通常,事件的设计方式使得引发事件的代码以相同的方式工作,而不管是否附加任何侦听器(事件处理程序)。

一个例子是按钮的点击事件。当用户点击按钮时,该按钮将引发一个单击事件,这将允许任何附加的事件处理程序执行某些操作。但是,如果没有附加事件处理程序,按钮不会改变它的行为(只是没有发生任何事情)。

虽然大多数事件被触发通知的东西已经发生,还有一些是为了告知的东西即将发生提出了一些事件。有时这些事件使用具有读/写属性的EventArgs类(与在EventArgs类中更常见的只读属性相反),它允许事件侦听器将数据传回给事件提升代码。我不能从头脑中想出任何良好的asp.net示例,但在winforms世界中,典型的例子是Form.Closing事件,其中事件处理程序可以设置e.Cancel = true以阻止表单关闭。

因此,在用户控件中,只要外部代码(通常是页面)对控件中发生的某些事情感兴趣时引发事件就会很有用。

0

要添加到这里的其他答案,让我用一个类比来解释事件。

假设您想每天收到报纸。你可以给报社打电话,通知他们你希望收到他们可能印刷的新报纸 - 你“订阅”报纸。报纸发送人维护订阅者的列表 - 应该接收报纸的人。当报纸每天印刷时,如果您在订阅者名单上,您将收到一份报纸。

现在,假设你有一个对象 - 一个按钮,例如。假设你想知道该按钮何时被按下。您“订阅”事件 - 特别是“OnClick”或“OnPressed”或任何可能以您的使用语言命名的内容。只要用户点击按钮,按钮就会遍历其订阅者列表,并调用提供给每个订阅者的功能。这些是'事件处理程序'。这些功能是用户在事件发生时想要调用的功能。用英文,用户可能会说:“当你按下时,调用MyOnClick()函数。”

事件在许多编程范例中用于处理复杂性 - 事件不需要知道事件处理程序的任何内容,反之亦然。这允许更松散的耦合,以及更多模块化,可重用的代码。

我建议你阅读Observer Pattern,因为这是事件和事件处理程序的基础。