• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 216
  • Last Modified:

How can I add a variable to a 3rd party class?

I am using Dundas chart class. It is in a DLL so I dont have direct access to it. Everything works great, but there is a  situation that I am having a hard time going around:
I am handling the mouse click event for several charts in my program.  All events are handled by the same function, which in turn calls another function that takes an enum type as a parameter.
Right now I am using an If/Else block that uses the chart titles to define what is the enum that that each chart should be assigned to.
Ideally I would like to use some kind of inheritance to be able to identify each chart directly by an enum that is defined as a member variable.
Private Sub Charts_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Chart1.MouseClick, Chart2.MouseClick, Chart3.MouseClick
        ' Call Hit Test Method
        Dim result As HitTestResult = Chart1.HitTest(e.X, e.Y)
 
        If result.ChartElementType = ChartElementType.DataPoint Then
            Dim frmTest As New DrillDownWindow
            'This is what I would like to do, but I cant beacause enumChartType is not a defined memeber in Dundas Chart class
            frmTest.GenerateData(sender.enumChartType)
 
            frmTest.Show()
            frmTest.BringToFront()
        End If

Open in new window

0
aferia
Asked:
aferia
  • 2
  • 2
1 Solution
 
lluddenCommented:
Can't you use the .tag on each chart object to store the relevant information?

If you want something more type safe, then inherit the control and add whatever fields you want to it.
0
 
aferiaAuthor Commented:
The problem with inheriting the control is that I loose the advatage of being able to setup the chart using the form designer. Dundas charts can be manipulated from the form designer and they have a very good wizard that can only be accessed from the form designer.
I dont what .tag is, can u expand a little?
0
 
lluddenCommented:
tag is an object that is added to most controls.  It is generally not used for anything by the control, but since it is a type object, the user can assign anything to it.

I have used it heavily when building forms dynamically to keep track of what data is in each control.  Here's an example.  I have a Manager inherits from employee, but also has a list of employees that person manages.  I needed to display on a form a series of listboxes, one for each manager, with all the employees listed in each.  Since I didn't know how many managers there would be at any given time, I added the listboxes dynamically at run time.  So I would know which was clicked on, I did lb(i).tag = manager(i) tying the manager to each listbox object.  Then in my event, I could do:

Ctype(CType(sender,Listbox).Tag,Manager).Name to get the manager name or whatever property of the manager object I needed.
0
 
aferiaAuthor Commented:
Great! That was exactly what I needed... it worked like a charm!
Thank you very much!
0

Featured Post

[Webinar] Cloud and Mobile-First Strategy

Maybe you’ve fully adopted the cloud since the beginning. Or maybe you started with on-prem resources but are pursuing a “cloud and mobile first” strategy. Getting to that end state has its challenges. Discover how to build out a 100% cloud and mobile IT strategy in this webinar.

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now