Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
asp.net vb用户控件在调用页上引发事件_Asp.net_Vb.net_User Controls_Delegates - Fatal编程技术网

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

asp.net vb用户控件在调用页上引发事件,asp.net,vb.net,user-controls,delegates,Asp.net,Vb.net,User Controls,Delegates,我正在努力学习用户控件。我创建了一个用户控件,它有一个文本框和一个按钮。我希望能够做到的是,当我单击用户控件中的按钮时,在aspx页面中填充一个标签。我知道我可以在页面上有一个按钮,它使用用户控件上的一些属性来获取该信息。。但是我想知道如何使用用户控件上的按钮。。原因是按钮只是一个例子。。学习工具。如果我能做到这一点,我可能会把东西放在用户控件中,可能需要这种传递信息。无论如何我找到了一些c#示例,我曾尝试将其用作vb。。但一旦开始进入代表和活动。。好。。这使我转向这篇文章 无论如何。。希望有人

我正在努力学习用户控件。我创建了一个用户控件,它有一个文本框和一个按钮。我希望能够做到的是,当我单击用户控件中的按钮时,在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。回答得好。