asp.net vb用户控件在调用页面上引发一个事件

时间:2010-04-07 17:39:14

标签: asp.net vb.net user-controls delegates

我正在尝试了解用户控件。我创建了一个具有文本框和按钮的用户控件。我想能够做的是当我单击用户控件中的按钮时,在aspx页面中填充标签。我知道我可以在页面上有一个按钮,它使用用户控件上的一些属性来获取该信息..但我想知道如何使用用户控件的按钮来实现它...原因是按钮只是一个例子..一个学习工具。如果我可以使这个工作,我可能会把东西放在用户控件中,可能需要这种传递信息。无论如何..我发现了一些c#例子,我试图以vb的形式工作..但是一旦开始进入代表和事件......好吧..它让我转向这篇文章。

无论如何......希望有人能伸出援助之手。

3 个答案:

答案 0 :(得分:18)

查看this tutorial是否有帮助。这样做的最好方法绝对是连接一个事件,这并不像你想象的那么难。基础是:

1。在控件类中定义一个事件:

Public Event MyEvent as System.EventHandler

2。在控件类的子函数或函数中引发事件:

RaiseEvent MyEvent(Me, New EventArgs())

3。在包含您的控件的页面上处理事件:

Protected Sub MyControl_MyEvent(ByVal sender As Object, ByVal e As EventArgs) Handles MyControl.MyEvent
    'Do stuff here
End Sub

答案 1 :(得分:2)

我相信你想做的就是让你的UserControl举起一个活动。 This MSDN article explains how to raise events并有VB示例。然后,您的页面可以订阅UserControl引发的事件,并设置您需要设置的任何值。最好将一些UserControl字段(即TextBoxes等)公开为公共属性,以便可以从订阅的控件中访问它们。

答案 2 :(得分:1)

问题在于,如果你让usercontrol依赖于它的父页面,那么它就不再是可移植的,并且你已经打败了首先将它变成用户控件的目的。

这可能是你在代表中运行的原因以及在任何示例中的内容 - 人们试图通过允许usercontrol调用传入方法来删除父页面的依赖性,而不是直接在父页面。

如果这只是为了练习,你最好按下父页面上的按钮在usercontrol中设置标签,而不是相反。你现在这样做的方式并不是一个好的设计,应该避免用于实际应用。