Event in a User Control

  • Thread starter Thread starter Paul Bromley
  • Start date Start date
P

Paul Bromley

Can someone give me a very simple example on how to do this? As an example I
have a commaned button in a user control. Once this user control is placed
on a form I want to be able to respond in the form to the button click on
the user control. In a simple example - how do I do this. Do I need to use
Delegates, and if so can you give a very simple example.

Many thanks

Paul Bromley
 
I forgot to ad to this, that when I click the button on my usercontrol, I
would like to call a subroutine in my project and send to it 2 string
parameters. I have invested a lot of time on user controls and delegates and
am about to give up!

Best wishes

Paul Bromley
 
If you'd like to send some extra information in your events (your 2 strings)
you'll have to create a new class that inherits from the EventArgs class.
Please check out this MSDN link, if you have problems implementing it let me
know.
http://msdn.microsoft.com/library/d...cpref/html/frlrfsystemeventargsclasstopic.asp


Here's a very basic control that raises an event.

Namespace SimpleControlExample

Public Class SimpleControl
Inherits System.Windows.Forms.UserControl

Public Event ButtonClick(ByVal sender As System.Object, ByVal e As
System.EventArgs)

#Region " Windows Form Designer generated code "

Public Sub New()
MyBase.New()

'This call is required by the Windows Form Designer.
InitializeComponent()

'Add any initialization after the InitializeComponent() call

End Sub

'UserControl overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As
Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub

'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer

'NOTE: The following procedure is required by the Windows Form
Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
Friend WithEvents Button1 As System.Windows.Forms.Button
<System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()
Me.Button1 = New System.Windows.Forms.Button
Me.SuspendLayout()
'
'Button1
'
Me.Button1.Location = New System.Drawing.Point(40, 68)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(76, 23)
Me.Button1.TabIndex = 0
Me.Button1.Text = "Raise Event!"
'
'SimpleControl
'
Me.Controls.Add(Me.Button1)
Me.Name = "SimpleControl"
Me.ResumeLayout(False)

End Sub

#End Region

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
RaiseEvent ButtonClick(Me, e)
End Sub
End Class
End Namespace
 
Thanks Andy,

I have now managed to raise an event in my project - just need to sort out
how to get this to call my subroutine and send the strings. One thing that I
had not dones is to create a Namespace for my control and then use an
Imports Statement in my project. I had better get off to bed now! If anyone
else can help then I'd be very grateful. Perhaps I will sort things
tomorrow.

Best wishes

Paul Bromley
 
Hi Andy,

Many thanks for your input so far on this one. The MSDN link was useful and
fortunately I can understand it. One thing that I am still having problems
with though - the Usercontrol should be self-contained' and needs to raise
an event in an extrenal Sub-routine that is within my project - so the
question is - how do I reference that sub-routine fom the control, or am I
missing something here?? I can now see how to pass the parameters OK - just
cannot reference the external sub-routine.

Can anyone else suggest??

Best wishes

Paul Bromley
 
You don't really want your control to reference a specific sub because now
that sub would be tightly bound to that control. Rather, interested parties
listen for your event, and react accordingly.

Did you see the code that was in the Form (SimpleControl_Click) ?

Could you call your sub from there? I might need to know more details about
your specific project if that doesn't make sense to you.
 
Back
Top