473,473 Members | 2,272 Online
Bytes | Software Development & Data Engineering Community
Create Post

Home Posts Topics Members FAQ

C# UserControl Bubbling events

Alright, I am beyond confused here and need some guidance. I need a
C# only sample. I have a simple Page and within it i am creating a
user control (ascx). The user control contains textboxes, buttons,
ect. I would like to catch/add a handler/recieve the Button.OnClick
event from the buttons that are in the user control, in the Page.
How? As far as I can tell, my only route is to:

RaiseBubbleEvent in the Button.OnClick in the UserControl
Override the OnBubbleEvent in the UserControl
Override the OnBubbleEvent in the Page from the already Override(n)
UserControl

This is stupid. All I want a custom event, call it CustomEvent with
what ever signature I want, and I would like to allow the instance to
have the event CustomEvent override(n). Please help. I must be
missing the bus on this one...I can't seem to find a good C# sample
for what seems so common/trivial. TIA
Nov 17 '05 #1
4 10093
I might well be missing something here but...

You can simplify what you do. The simplest is:
1) Call RaiseBubbleEvent in your Button.OnClick event handler in your
user control.
2) Override OnBubbleEvent in in the page.
The OnBubbleEvent handler may gets lots of events, so you need to
identify your event. You do this by either identifying the source of
the event or defining your own event args and passing them in the
RaiseBubbleEvent.

That is the minimum. I think good programming practice, especially if
third parties use the control, would be to provide a public delegate
as an event handler in the control. This requires:
1) Define MyEventArgs from System.EventArgs
2) Define a delgate event handler: MyEvent( object source, MyEventArgs
args)
3) Call RaiseBubbleEvent in the Button.OnClick
4) Override OnBubbleEvent in the control. This calls the delegate if
it is initialised.
5) Define a delegate function in Page and assign it to the delegate
event handler of the control.

Basically all you are doing in steps 1 to 4 is define your own event
handler for the control. This is done once in the control. Step 5 is
done on every page that uses the control - which is nicer than
overriding OnBubbleEvent in every page that uses the control.

I used the simple example in the on-line documentation for
RaiseBubbleEvent.

HTH
Charles

"Andy" <an*******@yahoo.com> wrote in message
news:3b**************************@posting.google.c om...
Alright, I am beyond confused here and need some guidance. I need a
C# only sample. I have a simple Page and within it i am creating a
user control (ascx). The user control contains textboxes, buttons,
ect. I would like to catch/add a handler/recieve the Button.OnClick
event from the buttons that are in the user control, in the Page.
How? As far as I can tell, my only route is to:

RaiseBubbleEvent in the Button.OnClick in the UserControl
Override the OnBubbleEvent in the UserControl
Override the OnBubbleEvent in the Page from the already Override(n)
UserControl

This is stupid. All I want a custom event, call it CustomEvent with
what ever signature I want, and I would like to allow the instance to have the event CustomEvent override(n). Please help. I must be
missing the bus on this one...I can't seem to find a good C# sample
for what seems so common/trivial. TIA

Nov 17 '05 #2
In article <3b**************************@posting.google.com >, Andy wrote:

I'm not sure I totally understand this, but...
Alright, I am beyond confused here and need some guidance. I need a
C# only sample. I have a simple Page and within it i am creating a
user control (ascx). The user control contains textboxes, buttons,
ect. I would like to catch/add a handler/recieve the Button.OnClick
event from the buttons that are in the user control, in the Page.
How? As far as I can tell, my only route is to:
Well, there's three choices.
1. Use BubbleEvent

2. Make the button public and let the owner page attach the event
directly

3. Define your own event that runs in response to Button.OnClick,
and have the page attach to that event (I suspect this is what you
really want here).

RaiseBubbleEvent in the Button.OnClick in the UserControl
Override the OnBubbleEvent in the UserControl
Override the OnBubbleEvent in the Page from the already Override(n)
UserControl

This is stupid. All I want a custom event, call it CustomEvent with
what ever signature I want, and I would like to allow the instance to
have the event CustomEvent override(n). Please help. I must be
missing the bus on this one...I can't seem to find a good C# sample
for what seems so common/trivial. TIA


I'm not sure you actually have a real need for BubbleEvent here.
BubbleEvent is largely for those situation where there's a lot of
dynamic control creation going on. If all you want is a custom event,
why not just define one and use standard delegate/event stuff, and skip
the BubbleEvent stuff altogether? Am I missing something?

// inside the control

public event EventHandler MyEvent;

private void MyButton_OnClick(object sender, EventArgs e)
{
if(MyEvent != null)
MyEvent(this, e); // or whatever args you want
}

// and inside the Page object

private void Page_Load(...)
{
MyUserControl.MyEvent += new EventHandler(myHandler);
}
I hope this helps, though I feel as if I'm actually missing something
here.
--
David
dfoster at
hotpop dot com
Nov 17 '05 #3
Think my brain was miss firing yesterday from reading the mounds of
crap on bubbling ect...anyways, went the route you described which was
exactly what I was looking to do. Was mostly confused on how the
custom events related back to intrinsic events for the the internal
user controls (read as, exposing internal control events).

David <df*****@127.0.0.1> wrote in message news:<sl********************@woofix.local.dom>...
In article <3b**************************@posting.google.com >, Andy wrote:

I'm not sure I totally understand this, but...
Alright, I am beyond confused here and need some guidance. I need a
C# only sample. I have a simple Page and within it i am creating a
user control (ascx). The user control contains textboxes, buttons,
ect. I would like to catch/add a handler/recieve the Button.OnClick
event from the buttons that are in the user control, in the Page.
How? As far as I can tell, my only route is to:


Well, there's three choices.
1. Use BubbleEvent

2. Make the button public and let the owner page attach the event
directly

3. Define your own event that runs in response to Button.OnClick,
and have the page attach to that event (I suspect this is what you
really want here).

RaiseBubbleEvent in the Button.OnClick in the UserControl
Override the OnBubbleEvent in the UserControl
Override the OnBubbleEvent in the Page from the already Override(n)
UserControl

This is stupid. All I want a custom event, call it CustomEvent with
what ever signature I want, and I would like to allow the instance to
have the event CustomEvent override(n). Please help. I must be
missing the bus on this one...I can't seem to find a good C# sample
for what seems so common/trivial. TIA


I'm not sure you actually have a real need for BubbleEvent here.
BubbleEvent is largely for those situation where there's a lot of
dynamic control creation going on. If all you want is a custom event,
why not just define one and use standard delegate/event stuff, and skip
the BubbleEvent stuff altogether? Am I missing something?

// inside the control

public event EventHandler MyEvent;

private void MyButton_OnClick(object sender, EventArgs e)
{
if(MyEvent != null)
MyEvent(this, e); // or whatever args you want
}

// and inside the Page object

private void Page_Load(...)
{
MyUserControl.MyEvent += new EventHandler(myHandler);
}
I hope this helps, though I feel as if I'm actually missing something
here.

Nov 17 '05 #4
Think my brain was miss firing yesterday from reading the mounds of
crap on bubbling ect...anyways, went the route you described which was
exactly what I was looking to do. Was mostly confused on how the
custom events related back to intrinsic events for the the internal
user controls (read as, exposing internal control events).

David <df*****@127.0.0.1> wrote in message news:<sl********************@woofix.local.dom>...
In article <3b**************************@posting.google.com >, Andy wrote:

I'm not sure I totally understand this, but...
Alright, I am beyond confused here and need some guidance. I need a
C# only sample. I have a simple Page and within it i am creating a
user control (ascx). The user control contains textboxes, buttons,
ect. I would like to catch/add a handler/recieve the Button.OnClick
event from the buttons that are in the user control, in the Page.
How? As far as I can tell, my only route is to:


Well, there's three choices.
1. Use BubbleEvent

2. Make the button public and let the owner page attach the event
directly

3. Define your own event that runs in response to Button.OnClick,
and have the page attach to that event (I suspect this is what you
really want here).

RaiseBubbleEvent in the Button.OnClick in the UserControl
Override the OnBubbleEvent in the UserControl
Override the OnBubbleEvent in the Page from the already Override(n)
UserControl

This is stupid. All I want a custom event, call it CustomEvent with
what ever signature I want, and I would like to allow the instance to
have the event CustomEvent override(n). Please help. I must be
missing the bus on this one...I can't seem to find a good C# sample
for what seems so common/trivial. TIA


I'm not sure you actually have a real need for BubbleEvent here.
BubbleEvent is largely for those situation where there's a lot of
dynamic control creation going on. If all you want is a custom event,
why not just define one and use standard delegate/event stuff, and skip
the BubbleEvent stuff altogether? Am I missing something?

// inside the control

public event EventHandler MyEvent;

private void MyButton_OnClick(object sender, EventArgs e)
{
if(MyEvent != null)
MyEvent(this, e); // or whatever args you want
}

// and inside the Page object

private void Page_Load(...)
{
MyUserControl.MyEvent += new EventHandler(myHandler);
}
I hope this helps, though I feel as if I'm actually missing something
here.

Nov 17 '05 #5

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

16
by: schneider | last post by:
I can't get any of the Key events to fire in my UserControl. The control only contains a few labels. This is really annoying.. Anyone know whats going on? Thanks, Schneider
0
by: Beatniks | last post by:
Is it possible to define a custom event for a contentplaceholder? I've got a chain of bubbling events: Button>repeater>childPage--- <ContentPlaceHolder> --- MasterPage In the childPage I get a...
3
by: Dale | last post by:
I have an application that, on my development PC and in production, throws unexpected null reference exceptions when returning from the click event handler of a button. The only fix is to do an...
1
by: Apu Nahasapeemapetilon | last post by:
Hello and thank you in advance for your help. Can anyone think of a reason why this code would work properly on one PC, but not another? I've got a System.Windows.Forms.UserControl that...
9
by: Rob | last post by:
When a custom control is used within a form, that control does not get events directly. I've run into this a couple times with both mouse and keyboard events. Ex: A custom control inherits from...
10
by: Benton | last post by:
Hi there, I have a UserControl with a couple of textboxes and a couple of buttons ("Save" and "Cancel"). The Click event for this buttons is in the UserControl's codebehind of course, so here's...
5
by: =?Utf-8?B?UGF1bA==?= | last post by:
Hello, I am aware that in ASP.NET there is the concept of event bubbling. What I am after is some advice on achieveing the same thing in a standard application. Say I have 3 classes. View,...
0
by: qreg | last post by:
I've got a problem with usercontrols and delegating events from the controls that are inside such a usercontrol control. First for a brief description of the problem. I have a user control...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
1
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
1
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...
0
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The...
0
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated ...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.