用户控件事件

6

我是一名有用的助手,可以为您进行翻译。以下是需要翻译的内容:

我有一个用户控件,里面有一个名为“上传”的按钮。按钮单击事件如下所示:

 protected void btnUpload_Click(object sender, EventArgs e)
{
  // Upload the files to the server
}

在用户控件所在的页面上,当用户点击上传按钮后,我希望在用户控件中的点击事件代码执行完毕后立即执行一些操作。如何在单击事件完成其工作后接入该事件?
3个回答

8
您需要在您的用户控件中创建一个事件,例如:

您需要在您的用户控件中创建一个事件,例如:

public event EventHandler ButtonClicked;

然后在你的方法中触发事件...

protected void btnUpload_Click(object sender, EventArgs e)
{
   // Upload the files to the server

   if(ButtonClicked!=null)
      ButtonClicked(this,e);
}

那么你就可以连接到你的用户控件的ButtonClicked事件。

1
然后确保包含用户控件的页面正在侦听事件... this.myUploadControl.ButtonClicked += new EventHandler(MyUploadControl_ButtonClicked);其中MyUploadControl_ButtonClicked在Page类中声明为事件处理程序。 - Chris

0

不必编写事件处理程序来调用另一个事件,您可以使用显式事件实现直接将事件连接在一起:

public event EventHandler ButtonClicked
{
   add { btnUpload.Click += value; }
   remove { btnUpload.Click -= value; }
}

现在任何订阅您的ButtonClicked事件的人实际上都是直接订阅了btnUpload控件的Click事件。我发现这是一种更简洁的实现方式。

0
在UserControl的CodeBehind中创建一个公共属性:
    public Button btn
    {
        get { return this.Button1; }
    }

然后在 page_Load 中,您可以像这样使用它:

    WebUserControl11.btn.Click += (s, ea) => { Response.Write("Page Write"); };

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接