Ragazzi,
ho un piccolo problema in vb.net e vi spiego:
come posso trasferire dei dati a una form ad un'altra?
Ovviamente i dati si trovano su una 1 form 2 scegliendoli devono apparire nei campi della 2 form.
Ciao e grazie
Ragazzi,
ho un piccolo problema in vb.net e vi spiego:
come posso trasferire dei dati a una form ad un'altra?
Ovviamente i dati si trovano su una 1 form 2 scegliendoli devono apparire nei campi della 2 form.
Ciao e grazie
ci sono tanti modi:
se ti serve passarli appena carichi il form 2 puoi modificare il costruttore di questo (la Sub New che trovi nel codice generato in automatico) e modificare la sua firma (per es. da Sub New a Sub New( ByVal Param1 as Tipo, Param2 as Tipo....) etc etc )
oppure puoi creare delle proprietà di tipo public e nel form 1 fai:
Dim myFrm as new Form2
myFrm.Proprietà1 = ....
oppure ti dichiari delle variabili di tipo public e sempre creando un oggetto di tipo form nel form che deve passare i valori fai myFrm.NomeVariabile =....
![]()
ciao, ho letto i vostri messaggi, scusate se mi intrometto ma ho un problema simile e vorrei avere un vostro consiglio.
ho un form1 dove effettuo delle ricerce, posso trovare ho un record o nessun record. nel caso trovi un record posso andare in form2 e modificare i dati o posso eliminare da form1 il record trovato.
se non trovo dati posso andare in form2 e inserire.
Cosa mi consigliate di fare. in Form1 pensavo di utilizzare dei datacommand e nel caso abbia trovato un record e il mio utente decide di andare a modificare inserisco il seguente codice nel pulsante modifica di form1
dim frm2 as new form2
form2.txtvalore="dddd"
etc...
se invece voglio inserire un nuovo record richiamo semplicemente frm2 e in fase di salvataggio creo un dataset per verificare se ci sono i dati che ho inserito se non ci sono (ho un campo codice univoco quindi la ricerca è piuttosto semplice...) inserisco...
è corretta la mia logica?
vi ringrazio anticipatamente...
ciao e buon lavoro a tutti![]()
Giu
si vipe, puoi fare in quel modo, però devi dichiarare le variabili in Form2 come PUBLIC
Ciao, prima di tutto grazie mille per la tua risposta...
sono all'inizio della programmazione con vb .NET e diciamo che non riesco a muovermi bene.
Approfitto della tua gentilezza per chiederti ancora una cosa... se nella form iniziale di un progetto ho un valore che devo avere disponibile per tutte le form come posso fare? L'unica cosa che mi è venuta in mente è creare un modulo e dichiarare la variabile Public (come facevo in vb6...).
Inoltre volevo sapere, riguardo all'esempio di prima (form1 e form2) io ho creato in form2 due combo che si popolano con dati non modificabili dall'utente, la prima combo la popolo nel form2_load mentre la seconda la devo popolare in base alla scelta fatta dall'utente nella combo 1. Premetto che ho usato i datareader per popolare ma mi succede una cosa strana, il codice inserito nell'evento SelectedIndexChanged di combo1 per popolare combo 2:
- viene eseguito n volte quando popolo combo1
- quando scelgo una nuova voce in combo1 prima combo2 si popola correttamente poi si popola con se seguenti voci
system.data.datarowview mentre se inserisco il codice in un pulsante funziona tutto....
Tu sai il motivo?
grazie ancora
![]()
Giu
Per "vedere" una variabile presente nel form1 potresti dichiararla come SHARED in modo tale da poterla usare, per esempio in un form2, facendo semplicemente:Originariamente inviato da vipe
Ciao, prima di tutto grazie mille per la tua risposta...
sono all'inizio della programmazione con vb .NET e diciamo che non riesco a muovermi bene.
Approfitto della tua gentilezza per chiederti ancora una cosa... se nella form iniziale di un progetto ho un valore che devo avere disponibile per tutte le form come posso fare? L'unica cosa che mi è venuta in mente è creare un modulo e dichiarare la variabile Public (come facevo in vb6...).
Form1.MiaVariabile
se form1 si trova in un progetto diverso da quello in cui si trova la form2 per vedere la variabile dovresti inserire in form2 il riferimento al progetto che contiene form1
Altra soluzione potresti crearti una proprietà Public Shared (readonlyo meno, a seconda se ti serve modificare il valore della variabile in form1) da usare quando ti serve.
il problema nasce perchè ad ogni item inserito nella combo, questo viene selezionato come item corrente, quindi se inserisci 10 item ti scata l'evento 10 volte. Prova ad usare i metodi BeginUpdate e EndUpdate per vedere se riesci a risolvereInoltre volevo sapere, riguardo all'esempio di prima (form1 e form2) io ho creato in form2 due combo che si popolano con dati non modificabili dall'utente, la prima combo la popolo nel form2_load mentre la seconda la devo popolare in base alla scelta fatta dall'utente nella combo 1. Premetto che ho usato i datareader per popolare ma mi succede una cosa strana, il codice inserito nell'evento SelectedIndexChanged di combo1 per popolare combo 2:
- viene eseguito n volte quando popolo combo1
- quando scelgo una nuova voce in combo1 prima combo2 si popola correttamente poi si popola con se seguenti voci
system.data.datarowview mentre se inserisco il codice in un pulsante funziona tutto....
Tu sai il motivo?
grazie ancora
![]()
MiaCombo.BeginUpdate
'AggiungiItem
MiaCombo.EndUpdate
Il fatto che ti visualizzi system.data.datarowview potrebbe dipendere da come hai settato le proprietà DisplayMember. Oppure potrebbe essere un poblema di lettura dei campi del datasource settato.
eventualmente posta qualche stralcio di codice che lo vediamo insieme![]()
Ti posto il mio codice
Private Sub DefinizioneEnte_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim DaTipiEnti As New SqlDataAdapter("SELECT * FROM TAB_TIPI_ENTI", StartUpSqlConnection)
Dim DsTipiEnti As New DataSet()
DaTipiEnti.Fill(DsTipiEnti, "TAB_TIPI_ENTI")
combo1.DataSource = DsTipiEnti.Tables("TAB_TIPI_ENTI")
combo1.DisplayMember = "DESCRIZIONE"
StartUpSqlConnection.Close()
End Sub
L'unico modo per non far eseguire n volte questo codice è inserirlo nel pulsante di form1 che chiama form2. In questo modo mi popola correttamente anche la combo2 senza inserire system.data.datarowview come dicitura. Senti scusa se ne approfitto ma non trovo niente ne sui libri in mio possesso nè sull'help-on-line...
- ho provato ad usare combo1.ValueMember.... ma da errore... si può usare come proprietà?
nella combo2.SelectedIndexChanged ho inserito il seguente codice
Private Sub combo2_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles combo2.SelectedIndexChanged
Dim StringaCodEnte As String
StringaCodEnte = "SELECT COD_ENTE AS CODENTE FROM(FINANZE_Enti_Creditori_Beneficiari)"
StringaCodEnte = StringaCodEnte & " WHERE(DENOMINAZIONE = N'" & CmbEnti.Text & "')"
Dim CmdCodEnte As New SqlCommand(StringaCodEnte, StartUpSqlConnection)
Dim CodEnte As String
CodEnte = CmdCodEnte.ExecuteScalar()
StartUpSqlConnection.Close()
If CodEnte = "" Then
TxtCodEnte.Text = CodEnte
Else
MsgBox("Attenzione!")
End If
End Sub
ma fa delle cose assure... del tipo esegue il codice fino a ...ExecuteScalar poi torna su a Dim CmdCodEnte As New SqlCommand.... esegue fino all'assegnazione di TxtCodEnte.text=... e poi salta nella routine di combo2.SelectedIndexChanged....
Scusa se ti rompo ma non riesco proprio a far funzionare niente... tu sai dei siti dove viene spiegato bene ADO .NET?
Grazie di tutto
Giu