2010-04-07 73 views
6

我试图了解用户控件。我创建了一个具有文本框和按钮的用户控件。我希望能够做的是当我点击用户控件中的按钮时,在aspx页面中填充一个标签。我明白,我可以只在页面上使用用户控件上的一些属性来获取该信息的按钮..但我想知道如何使用用户控件按钮来做到这一点。原因是该按钮只是一个例子..一个学习工具。如果我可以得到这个工作,我可能会把事情放在用户控件中,可能需要这种传递信息。无论如何..我发现了一些C#的例子,我试图让工作作为VB ..但一旦开始进入代表和事件..好..它让我转到这个职位。asp.net vb用户控件在调用页面上引发事件

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

回答

17

看看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 
+0

感谢您的信息..想知道..因为你有这样一个很好和简单的方式做它..你如何传递信息回来的事件..或者当事件被解雇(你的'做这里的东西)我会从用户控件上设置的proerty中获取值 – jvcoach23 2010-04-07 19:35:52

+0

如果你想在事件中传回信息,你应该改变你的“RaiseEvent”代码以传回除了'new EventArgs()之外的东西'。为了简单起见,你甚至可以传递一个字符串,例如:'RaiseEvent MyEvent(Me,MyString)',然后将页面上的MyControl_MyEvent子项的第二个参数更改为'ByVal s As String'而不是'ByVal e As EventArgs'。你可以通过任何你想要的事件。我只是使用EventArgs,因为这是一种常用的方法(大多数人使用自己的继承自EventArgs的类)。 – tloflin 2010-04-07 19:42:41

+0

很好..谢谢你的回应... – jvcoach23 2010-04-07 20:16:51

1

问题是,如果您使用户控件依赖于它的父页面,它不再是可移植的,并且您已经打败了首先将其设置为usercontrol的目的。

这可能是为什么你正在跨越的代表和诸如此类的东西在任何实例上运行 - 人都试图通过允许用户控件调用传入的方法来删除父页面上的依赖,而不是直接设置在标签父页面。

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

+0

我在考虑用户控件的一件事..有一个多组合框,它会在几个地方使用autosuggest ..用户选择的最后一个项目是我想要的值。它相当浑然一体,不想复制和粘贴那么多的代码或混乱。所以被thinkng用户控制会很好。事情是,一旦选择了这个值,我希望不必让用户点击一个按钮来将值返回到页面......在你正在谈论的内容中......你会采取什么方法。谢谢 – jvcoach23 2010-04-07 18:27:33

2

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

相关问题