Solved

Basic VB.Net Class Question

Posted on 2009-07-06
11
245 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
  • 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
 
LVL 15

Accepted Solution

by:
JackOfPH earned 500 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
IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

 

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

Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
How Can I fix my MouseHover Event? 14 27
Expando 4 33
Why, and when, to use Windows Workflow 1 17
Setting runtime form location 4 18
In my previous article (http://www.experts-exchange.com/Programming/Languages/.NET/.NET_Framework_3.x/A_4362-Serialization-in-NET-1.html) we saw the basics of serialization and how types/objects can be serialized to Binary format. In this blog we wi…
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 …
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…
This video demonstrates how to create an example email signature rule for a department in a company using CodeTwo Exchange Rules. The signature will be inserted beneath users' latest emails in conversations and will be displayed in users' Sent Items…

707 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

17 Experts available now in Live!

Get 1:1 Help Now