asp.net vb用户控件在调用页上引发事件
我正在努力学习用户控件。我创建了一个用户控件,它有一个文本框和一个按钮。我希望能够做到的是,当我单击用户控件中的按钮时,在aspx页面中填充一个标签。我知道我可以在页面上有一个按钮,它使用用户控件上的一些属性来获取该信息。。但是我想知道如何使用用户控件上的按钮。。原因是按钮只是一个例子。。学习工具。如果我能做到这一点,我可能会把东西放在用户控件中,可能需要这种传递信息。无论如何我找到了一些c#示例,我曾尝试将其用作vb。。但一旦开始进入代表和活动。。好。。这使我转向这篇文章asp.net vb用户控件在调用页上引发事件,asp.net,vb.net,user-controls,delegates,Asp.net,Vb.net,User Controls,Delegates,我正在努力学习用户控件。我创建了一个用户控件,它有一个文本框和一个按钮。我希望能够做到的是,当我单击用户控件中的按钮时,在aspx页面中填充一个标签。我知道我可以在页面上有一个按钮,它使用用户控件上的一些属性来获取该信息。。但是我想知道如何使用用户控件上的按钮。。原因是按钮只是一个例子。。学习工具。如果我能做到这一点,我可能会把东西放在用户控件中,可能需要这种传递信息。无论如何我找到了一些c#示例,我曾尝试将其用作vb。。但一旦开始进入代表和活动。。好。。这使我转向这篇文章 无论如何。。希望有人
无论如何。。希望有人能伸出援手。问题是,如果你让usercontrol依赖于它的父页面,它就不再是可移植的,你已经挫败了把它变成usercontrol的初衷 这可能就是为什么在任何示例中都会遇到委托之类的问题——人们试图通过允许usercontrol调用传入的方法,而不是直接在父页面中设置标签,来删除父页面上的依赖关系 如果这只是为了练习,最好按下父页面上的按钮在usercontrol中设置标签,而不是相反。现在这样做不是一个好的设计,在实际应用中应该避免使用。看看是否有帮助。做这件事最好的方法肯定是把一件事联系起来,这并不像你想象的那么难。基本原则是: 一,。在控件类中定义事件:
Public Event MyEvent as System.EventHandler
二,。在控件类的子类或函数中引发事件:
RaiseEvent MyEvent(Me,New EventArgs())
三,。处理包含控件的页面上的事件:
Protected Sub MyControl_MyEvent(ByVal sender As Object, ByVal e As EventArgs) Handles MyControl.MyEvent
'Do stuff here
End Sub
我相信您想要做的是让您的UserControl引发一个事件。并有VB的例子。然后,页面可以订阅UserControl引发的事件,并设置需要设置的任何值。最好将一些用户控件字段(如文本框等)公开为公共属性,以便可以从订阅的控件访问它们 对于用户控件,我考虑的一件事是。。有一个多功能组合框,可以在多个地方使用自动建议功能。。用户选择的最后一项是我想要的值。它非常受欢迎,不想复制和粘贴那么多代码或凌乱。所以我认为用户控件可以很好地工作。问题是,一旦选择了该值,我希望不必让用户点击按钮将该值返回页面。。。在你所说的范围内。。你会采取什么方法。谢谢你提供的信息。。我在想。。既然你有这么好的简单的方法。。如何在活动中传回信息。。或者,当事件被触发时(您的“Do stuff here”),我会从用户控件上设置的属性中获取值。如果您想在事件中传回信息,您应该更改“RaiseEvent”代码以传回除
new EventArgs()
之外的内容。为了简单起见,您甚至可以传递一个字符串,如下所示:RaiseEvent MyEvent(Me,MyString)
,然后将页面上MyControl\u MyEvent
sub的第二个参数更改为ByVal s As string
而不是ByVal e As EventArgs
。你可以在活动中传递任何你想要的东西。我只是使用EventArgs,因为这是一种常见的方法(大多数人使用自己的类继承自EventArgs)。如果您在一个页面上有一个usercontrol,然后决定添加事件,那么您将希望从主机页面删除该usercontrol并将其重新添加。至少在VB中,控件声明似乎不够智能,无法在声明后添加WITHEVENTS。回答得好。