Solved

Delegate error “Error binding to target method.”

Posted on 2011-03-02
1
434 Views
Last Modified: 2012-05-11
Hi,

I was wondering if someone is able to help. Please refer to the attached code snippet.
I have created a sub that populates a screen with panels. It is my intention that when a panel is clicked the following method is triggered “PanelClick”.

This method is located within the objSenderForm object that I pass through. I have confirmed during runtime that this can be triggered correctly by doing the following in the immediate window:

DirectCast(objSenderForm,PDM.frmLoadForm).PanelClick

PanelClick is set to only return a message box and I can confirm that this functions correctly.

The issue is that I receive the following error message “Error binding to target method.” When the following line is being executed:

Dim obj_event_delegate As [Delegate] = [Delegate].CreateDelegate(obj_event_info.EventHandlerType, DirectCast(objSenderForm, PDM.frmLoadForm), strHandler)

I am unsure how to resolve this issue.

The target is the same as the passed in object that the controls are being added and the strEvent is = to “MouseClick” and the handler is = “PanelClick” which is a public method within frmLoadForm (the passed in object).

Any help would be appreciated. I have possibly just been looking at this too long.

Regards,

Ross

Public Sub getNewPanel(ByVal xCord As Integer, ByVal yCord As Integer, _
                                ByVal height As Integer, ByVal width As Integer, _
                                ByVal strEvent As String, ByVal strHandler As String, _
                                ByVal strQuestion As String, ByVal strControl As String, _
                                ByVal strContronName As String, ByVal strSendTo As String, _
                                ByVal booEnabled As Boolean, _
                                ByVal objSenderForm As Object)

        objPanel = New Panel

        objPanel.Height = height
        objPanel.Width = width
        objPanel.Text = ""
        objPanel.BackColor = Color.Blue
        objPanel.Name = strContronName
        objPanel.Enabled = booEnabled
        objPanel.Location = New System.Drawing.Point(xCord, yCord)
        DirectCast(objSenderForm, PDM.frmLoadForm).Controls.Add(objPanel)


        If strHandler <> "" Then
            Dim obj_type = objPanel.GetType

            Dim obj_event_info = obj_type.GetEvent(strEvent, Reflection.BindingFlags.Instance Or Reflection.BindingFlags.Public)
            Dim obj_event_delegate As [Delegate] = [Delegate].CreateDelegate(obj_event_info.EventHandlerType, DirectCast(objSenderForm, PDM.frmLoadForm), strHandler)
            'objSenderForm
            'DirectCast(Me.objSenderForm,PDM.frmLoadForm)

            obj_event_info.AddEventHandler(objPanel, obj_event_delegate)
            obj_event_delegate = Nothing
        End If


    End Sub

Open in new window

0
Comment
Question by:ross13
1 Comment
 
LVL 96

Accepted Solution

by:
Bob Learned earned 500 total points
Comment Utility
1) What does "strHandler" do for you, that you need to check for an empty string?

2) Usually, when adding an event handler, I would do something like this:

Dim panel As New Panel()
Dim textBox As New TextBox()

panel.Controls.Add(textBox)

Me.Controls.Add(panel)

AddHandler panel.Click, AddressOf PanelClickHandler

...

Private Sub PanelClickHandler(ByVal sender As Object, ByVal e As EventArgs)
End Sub

Open in new window

0

Featured Post

Why You Should Analyze Threat Actor TTPs

After years of analyzing threat actor behavior, it’s become clear that at any given time there are specific tactics, techniques, and procedures (TTPs) that are particularly prevalent. By analyzing and understanding these TTPs, you can dramatically enhance your security program.

Join & Write a Comment

Suggested Solutions

Whether you've completed a degree in computer sciences or you're a self-taught programmer, writing your first lines of code in the real world is always a challenge. Here are some of the most common pitfalls for new programmers.
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
In this fifth video of the Xpdf series, we discuss and demonstrate the PDFdetach utility, which is able to list and, more importantly, extract attachments that are embedded in PDF files. It does this via a command line interface, making it suitable …
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…

772 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now