Solved

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

Posted on 2008-10-10
4
182 Views
Last Modified: 2010-04-21
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
Comment
Question by:aferia
  • 2
  • 2
4 Comments
 
LVL 18

Expert Comment

by:lludden
ID: 22691051
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
 

Author Comment

by:aferia
ID: 22691144
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
 
LVL 18

Accepted Solution

by:
lludden earned 500 total points
ID: 22691716
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
 

Author Closing Comment

by:aferia
ID: 31505205
Great! That was exactly what I needed... it worked like a charm!
Thank you very much!
0

Featured Post

Is Your AD Toolbox Looking More Like a Toybox?

Managing Active Directory can get complicated.  Often, the native tools for managing AD are just not up to the task.  The largest Active Directory installations in the world have relied on one tool to manage their day-to-day administration tasks: Hyena. Start your trial today.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

If you have ever used Microsoft Word then you know that it has a good spell checker and it may have occurred to you that the ability to check spelling might be a nice piece of functionality to add to certain applications of yours. Well the code that…
Most everyone who has done any programming in VB6 knows that you can do something in code like Debug.Print MyVar and that when the program runs from the IDE, the value of MyVar will be displayed in the Immediate Window. Less well known is Debug.Asse…
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…

770 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