Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Basic VB.Net Class Question

Posted on 2009-07-06
11
Medium Priority
?
254 Views
Last Modified: 2013-11-08
How can I have a class created on one (main) form be able to be access from other forms?

Example, when the main window loads, I do something like:
--> Dim User as new UserClass(UserId)
then I can use 'User' on that form, however if I open a new window like so:
--> Dim SettingWindow as new SettingsFrm
--> SettingsWindow.Show
I cannot access the 'User' object...

I know this is how it works, but how (I'm sure basic) way can I get access to the 'User' object from the child window (not a copy, same one, without passing it as a parameter)

Feel like it's a silly question - but looking on Google did not reveal much.
(Code above from head, may not be 100% correct)

500pts.

Thanks,

Andrew
0
Comment
Question by:Crazy_Penguins
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 6
  • 4
11 Comments
 
LVL 13

Expert Comment

by:drypz
ID: 24791030
Hi! Declare your class as Public.



0
 

Author Comment

by:Crazy_Penguins
ID: 24791050
Okay...

Let me show you what I have, maybe we can work from there...

I make this object in my first form, but cannot seem to access it from other child forms...

Thanks for your help drypz
Public Class CSW_UserSecurity
    Private UserID As Integer
    Public RemoveService As Boolean
    Public RemoveHardware As Boolean
    Public RemovePayment As Boolean
 
    Public Sub New(ByVal UserID As Integer)
        'called when created
        Me.UserID = UserID
        LoadSecurity()
    End Sub
 
    Private Sub LoadSecurity()
        'some DB stuff here, sets the var values
    End Sub
 
End Class

Open in new window

0
 

Author Comment

by:Crazy_Penguins
ID: 24791059
More Information:
'I put this in my primary window:
Dim myUserSecurity As New CSW_UserSecurity(My.Settings.UserID)
 
'I can't use this in a child window
myUserSecurity.aFunctionNameHere
 
'Says it's not declared 

Open in new window

0
Learn Veeam advantages over legacy backup

Every day, more and more legacy backup customers switch to Veeam. Technologies designed for the client-server era cannot restore any IT service running in the hybrid cloud within seconds. Learn top Veeam advantages over legacy backup and get Veeam for the price of your renewal

 
LVL 15

Accepted Solution

by:
JackOfPH earned 2000 total points
ID: 24791183
Try the class below it is using the Singleton Design pattern of GOF....

USAGE:

'On Main window...

Dim myUserSecurity As CSW_UserSecurity = CSW_UserSecurity.CreateInstance(My.Settings.UserID)

In child window...

Dim myUserSecurity As CSW_UserSecurity = CSW_UserSecurity.GetInstance

myUserSecurity.aFunctionNameHere

Public Class CSW_UserSecurity
    Private Shared _CSWObject As CSW_UserSecurity
    Private UserID As Integer
    Public RemoveService As Boolean
    Public RemoveHardware As Boolean
    Public RemovePayment As Boolean
 
    Private Sub New()
 
    End Sub
 
    Public Shared Function GetInstance() As CSW_UserSecurity
        Return _CSWObject
    End Function
 
    Public Shared Function CreateInstance(ByVal UserID As Integer) As CSW_UserSecurity
        If _CSWObject Is Nothing Then
            _CSWObject = New CSW_UserSecurity
            _CSWObject.UserID = UserID
            _CSWObject.LoadSecurity()
        End If
 
        Return _CSWObject
    End Function
 
 
    Private Sub LoadSecurity()
        'some DB stuff here, sets the var values
    End Sub
End Class

Open in new window

0
 

Author Comment

by:Crazy_Penguins
ID: 24791263
Thanks JackOfPh,

However now I get this:
Name '_CSWObject' is not declared.

Open in new window

0
 

Author Comment

by:Crazy_Penguins
ID: 24791265
Opps missed a line, let me re-test
0
 
LVL 15

Expert Comment

by:JackOfPH
ID: 24791268
Declare something like this in your class...

Private Shared _CSWObject As CSW_UserSecurity
0
 

Author Comment

by:Crazy_Penguins
ID: 24791344
Okay, it all works, but I want to understand why it works...

is the _CSWObject available from all my forms now? (because of the "Private Shared" part?)

why do I have to use '_CSWObject.LoadSecurity()' instead of just 'LoadSecurity()'

Thanks again
0
 
LVL 15

Expert Comment

by:JackOfPH
ID: 24791357
This will create the instance of the class not the

CreateInstance(My.Settings.UserID)


If _CSWObject Is Nothing Then

'This line of code checks if you already has an object CSQObject created... If the _CSObject is nothing you will create new intance of the class, If there is an existing object already you use the created objects you created before.


       
0
 
LVL 15

Expert Comment

by:JackOfPH
ID: 24791379
_CSWObject.LoadSecurity() ' This will call the function LoadSecurity in the object that you created.

If you use LoadSecurity you will calling the function from that class not from the object that created...

:)

I hope I explain it, clearly.

It is hard to speak english, if you know what I mean...
0
 

Author Comment

by:Crazy_Penguins
ID: 24791401
Thanks for your help.  I think I got it now.
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Question has a verified solution.

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

It’s quite interesting for me as I worked with Excel using vb.net for some time. Here are some topics which I know want to share with others whom this might help. First of all if you are working with Excel then you need to Download the Following …
Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
In this video, Percona Solution Engineer Rick Golba discuss how (and why) you implement high availability in a database environment. To discuss how Percona Consulting can help with your design and architecture needs for your database and infrastr…
In this video, Percona Solutions Engineer Barrett Chambers discusses some of the basic syntax differences between MySQL and MongoDB. To learn more check out our webinar on MongoDB administration for MySQL DBA: https://www.percona.com/resources/we…

688 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