Newsgroup: it.comp.lang.visual-basic
Titolo: variabile fra due form

ho visual studio 2008 express   come faccio a passare una variabile da un 
form all' altro??
praticamente prelevo un dato da una tabella in un form e lo devo utilizzare 
in un altro form..... grazie mille

 ha scritto nel messaggio 
news:oRlrj.85$IN4...@nntpserver.swip.net...

Variabile pubblica direi 

 form all' altro??
Utilizza una variabile pubblica tramite un modulo 

ho provato a mettere una variabile nel form1 definendola con public..... poi 
ridefinita in form2   ma non funziona
scusate sono alle prime armi   cosa sbaglio??
grazie
"Lutz" <Lu...@Lutz.it> ha scritto nel messaggio 
news:zXorj.242054$%k.37...@twister2.libero.it...


 scusate sono alle prime armi   cosa sbaglio??
Devi creare un modulo e definire la variabile SOLO in quel modulo.
-- 
Daniele Pinna  (leva oops. per rispondere)
Utente Skype: dapinna
Sito Web: 
http://www.dapinna.com
	<-- Nuovo Sito... ora in Joomla
Il Docfa in Pillole:  
http://www.ildocfainpillole.it

 grazie
Fai tasto destro sul progetto, come se dovessi aggiungere un nuovo form. Ma 
invece di cliccare poi su Windows Form, metti Module.
Il modulo può contenere variabili e funzioni condivise da tutti i form.
Solo che le variabili pubbliche, invece di dichiararle con Dim, le dichiari 
con Public.
Ciao! 



Non so in VB2008, ma in VB6 la cosa migliore sarebbe usare Property GET/LET
sulla form che restituisce il dato, per evitare scritture incontrollate su
tale variabile.
Es. che restituisce un valore boolean
Private BoolResult As Boolean
Public Property Get GetBoolResult() As Boolean
  GetBoolResult = BoolResult
End Property

risolto col modulo
grazie mille e  scusate la mia banalità
"Lutz" <Lu...@Lutz.it> ha scritto nel messaggio 
news:QAIrj.242679$%k.37...@twister2.libero.it...


 tale variabile.
appunto. visto che la domanda riguardava 2008, mi sembra assai strano che in 
un sistema che va per classi e istanze si debba ricorrere a qualcosa (la 
public in un bas) che gia' si cercava di limitare in vb6...
vitriol, non fare lo gnorri, dove sei? :)
ciao, a.

 ciao, a.
Infatti non si deve; la soluzione di implementare una property e'
sempre valida, e sempre preferibile.
In piu', essendo ora le form classi "fully functional", ci sono tanti
altri modi:
per esempio se la necessita' e' che FormB restituisca un risultato a
FormA dopo che e' stata chiusa, e' possibile definire una funzione
Shared in FormB, questa funzione crea un'instanza di FormB, la
visualizza e in uscita predispone il valore da tornare come risultato
della funzione
FormA quindi, invece che creare manualmente l'istanza di B e applicare
i vari .Show/.ShowDialog, chiamera' semplicemente FormB.MetodoShared e
leggera' il risultato

 vitriol, non fare lo gnorri, dove sei? :)
Boh, che devo dire? Un form è una classe come tutte le altre, quindi si 
possono usare tutti i metodi che si usano anche per passare valori tra 
classi.
Ne vuoi uno molto molto OOP? :-)
Definisci un capo privato nel secondo form, scrivi un overload del 
costruttore che fa l'assegnazione, e poi passa il valore all'atto della 
creazione dell'istanza del form. Esempio:
Public Class Form2
     Private m_MiaVariabile As String
     Public Sub New(ByVal MiaVariabile As String)
         MyBase.New()
         InitializeComponent()
         Me.m_MiaVariabile = MiaVariabile
     End Sub
End Class
Quindi dal primo form:
Dim frmDue As New Form2("Ciao mondo!")
frmDue.Show()
In un colpo solo hai creato una istanza di Form2, già completa di 
assegnazione della variabile col valore che volevi passare.
-- 
news:it-alt.comp.software.openoffice : Il newsgroup dedicato a
OpenOffice.org, la suite open source di applicazioni per ufficio.
Saluti, VITRIOL