Discussione:
Passare variabili tra forms
(troppo vecchio per rispondere)
net-level
2009-09-03 13:37:02 UTC
Permalink
Sono alle prime armi con VB.net, mi spiegate come passare una variabile da
una form ad un altre.
Mi spiego meglio: Ho una form di login con campi nome utente e password,
quando clicco su "entra", devo poter passare il nome utente e la password
alla form che verrà aperta, come faccio ???
Matteo Migliore
2009-09-03 14:13:41 UTC
Permalink
Post by net-level
Sono alle prime armi con VB.net, mi spiegate come passare una variabile da
una form ad un altre.
Mi spiego meglio: Ho una form di login con campi nome utente e password,
quando clicco su "entra", devo poter passare il nome utente e la password
alla form che verrà aperta, come faccio ???
Hai almeno due soluzioni.

1. passare le credenziali alla seconda Form:
---------------------------------------------
Public Class LoginForm : Inherits Form
Protected Sub Login_Clicked(ByVal sender As Object, ByVal e As
EventArgs)
Dim loggedInForm As New LoggedInForm(Me.usernameTextBox.Text,
Me.passwordTextBox.Text)
loggedInForm.Show()
End Sub
End Class

Public Class LoggedInForm : Inherits Form
Private _userName As String
Private _password As String

Public Sub New(ByVal userName As String, ByVal password As String)
Me._userName = userName
Me._password = password
End Sub

Private Property UserName() As String
Get
Return _userName
End Get
End Property

Private Property Password() As String
Get
Return _password
End Get
End Property
End Class
---------------------------------------------

2: inserire le credenziali in una classe Singleton che
condividi nell'applicazione.
http://www.dofactory.com/Patterns/PatternSingleton.aspx

--
Matteo Migliore
http://blogs.ugidotnet.org/matteomigliore
net-level
2009-09-03 14:58:01 UTC
Permalink
Post by Matteo Migliore
Post by net-level
Sono alle prime armi con VB.net, mi spiegate come passare una variabile da
una form ad un altre.
Mi spiego meglio: Ho una form di login con campi nome utente e password,
quando clicco su "entra", devo poter passare il nome utente e la password
alla form che verrà aperta, come faccio ???
Hai almeno due soluzioni.
---------------------------------------------
Public Class LoginForm : Inherits Form
Protected Sub Login_Clicked(ByVal sender As Object, ByVal e As
EventArgs)
Dim loggedInForm As New LoggedInForm(Me.usernameTextBox.Text,
Me.passwordTextBox.Text)
loggedInForm.Show()
End Sub
End Class
Public Class LoggedInForm : Inherits Form
Private _userName As String
Private _password As String
Public Sub New(ByVal userName As String, ByVal password As String)
Me._userName = userName
Me._password = password
End Sub
Private Property UserName() As String
Get
Return _userName
End Get
End Property
Private Property Password() As String
Get
Return _password
End Get
End Property
End Class
---------------------------------------------
2: inserire le credenziali in una classe Singleton che
condividi nell'applicazione.
http://www.dofactory.com/Patterns/PatternSingleton.aspx
--
Matteo Migliore
http://blogs.ugidotnet.org/matteomigliore
Ho utilizzato il primo metodo che mi hai indicato, ma la sub new mi d'ha il
seguente errore:
'Public Sub New(userName As String, password As String)' nel tipo
'Applicazione.frmIndex' generato dalla finestra di progettazione deve
chiamare il metodo InitializeComponent.
Matteo Migliore
2009-09-03 15:41:24 UTC
Permalink
Post by net-level
Ho utilizzato il primo metodo che mi hai indicato, ma la sub new mi d'ha il
'Public Sub New(userName As String, password As String)' nel tipo
'Applicazione.frmIndex' generato dalla finestra di progettazione deve
chiamare il metodo InitializeComponent.
Come segnala l'errore devi chiamare InitializeComponent nel
costruttore della Form:
-----------------------------------
Public Sub New(ByVal userName As String, ByVal password As String)
Me.InitializeComponent()
Me._userName = userName
Me._password = password
End Sub
-----------------------------------

--
Matteo Migliore
http://blogs.ugidotnet.org/matteomigliore
net-level
2009-09-03 15:58:10 UTC
Permalink
Post by Matteo Migliore
Post by net-level
Ho utilizzato il primo metodo che mi hai indicato, ma la sub new mi d'ha il
'Public Sub New(userName As String, password As String)' nel tipo
'Applicazione.frmIndex' generato dalla finestra di progettazione deve
chiamare il metodo InitializeComponent.
Come segnala l'errore devi chiamare InitializeComponent nel
-----------------------------------
Public Sub New(ByVal userName As String, ByVal password As String)
Me.InitializeComponent()
Me._userName = userName
Me._password = password
End Sub
-----------------------------------
--
Matteo Migliore
http://blogs.ugidotnet.org/matteomigliore
OK, grazie..
Wodka40[Google]
2009-09-03 17:43:50 UTC
Permalink
On 3 Set, 16:13, "Matteo Migliore" <***@gmail.com> wrote:
uh...mamma mia ...mi metti dubbi a quest'ora(che strabip ho fatto
finora... arrosti misti???)!
ma se deve passare per forza da una form invece che da un punto
centrale di validazione..
una proprietà pubblica o friend sulla form2 che accetta una stringa
non va bene?...troppo semplice?
Matteo Migliore
2009-09-03 18:20:15 UTC
Permalink
Post by Wodka40[Google]
uh...mamma mia ...mi metti dubbi a quest'ora(che strabip ho fatto
finora... arrosti misti???)!
ma se deve passare per forza da una form invece che da un punto
centrale di validazione..
una proprietà pubblica o friend sulla form2 che accetta una stringa
non va bene?...troppo semplice?
In questo caso le credenziali, per come ho capito la domanda,
sono *necessarie*, imporre che vengano passate al costruttore
è un modo per rispettare il vincolo.

La property potrebbe non venire valorizzata
dal chiamante. Ovviamente si impone la verifica
anche nel costruttore, se string.IsNullOrEmpty =>
exception.

E' una forma particolare di Invesion Of Control (IoC)
chiamata Dependency Injection (DI):
http://en.wikipedia.org/wiki/Dependency_injection

--
Matteo Migliore
http://blogs.ugidotnet.org/matteomigliore
Wodka40[Google]
2009-09-04 11:40:02 UTC
Permalink
On 3 Set, 20:20, "Matteo Migliore" <***@gmail.com> wrote:
zac> In questo caso le credenziali, per come ho capito la domanda,
Post by Matteo Migliore
sono *necessarie*, imporre che vengano passate al costruttore
è un modo per rispettare il vincolo.
zac

Si parla per parlare eh....e mi inchino alla tua competenza molto più
alta della mia....

ma per quale ragione se metto un login non dovrei passare la user e la
password se (malauguratamente) decido di validare form per form
l'utente? Per sbaglio? beh se fa il check... e la user e pw manca
dovrebbe fallire!

Io la faccio fare una volta e scrivere una sequenza criptata (con key
che varia ogni volta che si apre la sessione)da qualche parte (in
memoria in un file in una risorsa qualsiasi ....dipende)....

lo so che sa molto di cookie...e sarà grezza da fare schifo...ma
dovunque tu voglia...leggi "sto coso" e sai chi è loggato con che
livello nome etc etc

....si vede che mi piace ancora vb6 eh!
:o)
Matteo Migliore
2009-09-04 12:16:10 UTC
Permalink
Post by Wodka40[Google]
Si parla per parlare eh....e mi inchino alla tua competenza molto più
alta della mia....
Non esageriamo :).
Post by Wodka40[Google]
ma per quale ragione se metto un login non dovrei passare la user e la
password se (malauguratamente) decido di validare form per form
l'utente? Per sbaglio? beh se fa il check... e la user e pw manca
dovrebbe fallire!
Per parlare... potrebbe essere che esista una form di login
che raccoglie le credenziali che poi passa ad un'altra Form
che si occupa di validarle. Poi ovvio che la validazione ed
il successivo funzionamento dell'applicazione in base a questa
dovrebbe essere fatta in modo centralizzato.
Post by Wodka40[Google]
Io la faccio fare una volta e scrivere una sequenza criptata (con key
che varia ogni volta che si apre la sessione)da qualche parte (in
memoria in un file in una risorsa qualsiasi ....dipende)....
lo so che sa molto di cookie...e sarà grezza da fare schifo...ma
dovunque tu voglia...leggi "sto coso" e sai chi è loggato con che
livello nome etc etc
Le applicazioni stand-alone non sono mia specializzazione,
ma penso che esista un Framework/pattern/"qualcosa" che
fornisca le funzionalità legate alla security senza dover scrivere
tutto da zero.

Qui trovi un web cast che spiega come usare il modello
di security di ASP.NET in Windows (Client Application Services):
http://www.microsoft.com/uk/msdn/nuggets/nugget/268/Using-ASPNET-Client-Application-Services-in-Windows-Forms-Apps.aspx
Post by Wodka40[Google]
....si vede che mi piace ancora vb6 eh!
:o)
VB6 => bleah :)

--
Matteo Migliore
http://blogs.ugidotnet.org/matteomigliore

Loading...