asp.net vb user control raising an event on the ca

2019-03-28 15:41发布

i'm trying to learn about user controls. I created a user control that has a textbox and a button. What i'd like to be able to do is when i click the button in the user control, populate a label in the aspx page. I understand that i could just have a button on the page that uses some properties on the user control to get that information.. but i'd like to know how to do it with the button the user control.. the reason for this is the button is just an example.. a learning tool. if i can get this working, i'd likely be putting thing in the user control that might require this kind of passing information. Anyway.. i've found some c# examples that i tried to get working as vb.. but once started getting into the delegates and events.. well.. it made me turn to this post.

anyway.. hopefully someone can lend a hand.

3条回答
2楼-- · 2019-03-28 16:10

I believe what you would want to do is to have your UserControl raise an event. This MSDN article explains how to raise events and has VB examples. Then your page can subscribe to the event that your UserControl raises and set whatever values you need to set. It might be best to expose some of your UserControl fields (i.e. TextBoxes, etc.) as public properties so they're accessible from the subscribed control.

查看更多
淡お忘
3楼-- · 2019-03-28 16:16

The problem is that if you make the usercontrol dependent on it's parent page, it's no longer portable, and you've defeated the purpose of making it into a usercontrol in the first place.

This is probably why you're running across delegates and whatnot in any examples - people are trying to remove the dependency on the parent page by allowing the usercontrol to call a passed-in method, instead of directly setting the label in the parent page.

If this is just for practice, you'd be better off pressing a button on the parent page to set a label in the usercontrol, rather than the other way around. The way you're doing it now is not a good design and should be avoided for real applications.

查看更多
男人必须洒脱
4楼-- · 2019-03-28 16:22

See if this tutorial can help. The best way to do this is definitely to wire up an event, which isn't nearly as hard as you think. The basics are:

1. Define an event in your control class:

Public Event MyEvent as System.EventHandler

2. Raise the event in a sub or function of your control class:

RaiseEvent MyEvent(Me, New EventArgs())

3. Handle the event on the page that contains your control:

Protected Sub MyControl_MyEvent(ByVal sender As Object, ByVal e As EventArgs) Handles MyControl.MyEvent
    'Do stuff here
End Sub
查看更多
登录 后发表回答