如何在Web窗体中为用户控件创建自定义事件

本文关键字:控件 用户 创建 自定义 事件 Web 窗体 | 更新日期: 2023-09-27 18:00:26

我是webforms中用户控件的新手,我需要向控件添加一个事件,以便使用该控件的开发人员可以向该事件添加事件处理程序。做这件事最好的方法是什么?

此控件是一个自定义上传程序控件。控件将文件异步上载到web服务,并将成功上载的文件列表存储在隐藏字段中。在下一篇文章中,我想阅读请求表单集合中的这个隐藏字段,如果它不为空,那么我想触发一个成功的上传事件。

编辑

为了澄清,我正在寻找一个可以触发的服务器端事件。我只是不熟悉创造它们。

如何在Web窗体中为用户控件创建自定义事件

首先为事件参数创建一个类。

// this can house any kind of information you want to send back with the trigger
public class MyNewEventArgs : EventArgs { ... }

接下来,在控件的类上创建事件。这是使用委托和事件本身来完成的。

// event delegate handler
public delegate void MyNewEventHandler(object s, MyNewEventArgs e);
// your control class
public class MyControl : Control
{
  // expose an event to attach to.
  public event MyNewEventHandler MyNewEvent;

接下来,您需要从代码中激发事件。我们通过抓取事件,检查订阅者,然后触发来实现这一点。

// grab a copy of the subscriber list (to keep it thread safe)
var  myEvent = this.MyNewEvent;
// check there are subscribers, and trigger if necessary
if (myEvent != null)
  myEvent(this, new MyNewEventArgs());

有关如何创建事件的更多信息,请访问MSDN。