Chiamare un oggetto nel form A dal form B

venerdì 10 giugno 2005 - 15.53

Miku Profilo | Newbie

Salve a tutti,

non riesco a chiamare un oggetto Griglia che si trova in un altro form. Tale Formeffettua la ricerca in un db e recuperato il dataset deve passarlo alla Griglia.
Come devo fare?
Io ho provato così:


FrmRisultati_Ricerca Frm_Risultati = FrmRisultati_Ricerca;
DataSet qryls = new DataSet();
qrylst = RicercaChiamate("util",""); //Funzione che effettua la query
Frm_Risultati.MiaGriglia.SetDataBinding(qryls, "Risultati"); //assegno i valori alla griglia




Non mi da alcun errore ma non vedo i risultati....

Grazie mille
Miku



**************************************
Vuoi vedere il mio Curriculum Vitae in Formato
Europeo per conoscermi e collaborare insieme in qualche progetto?
vai su www.eurocv.it ed inserisci
il mio Public Code: mycv
**************************************

Cteniza Profilo | Guru

Prova con
Frm_Risultati.MiaGriglia.DataSource = myDataSet.Tables["mytable"];

Miku Profilo | Newbie

Niente da fare! Solita storia.
Ma è possibile che sia così difficile assegnare un dataset ad una griglia che si trova in un altro form?

mi dispero.
miku

Cteniza Profilo | Guru

Prova con:
form che condivide la datasource del datagrid
public DataGrid.DataSource GridSource
{
get
{
return dataGrid1.DataSource;
}
set
{
dataGrid1.DataSource = value;
}
}

McSxp Profilo | Newbie

Sei sicuro che non sia un problema di Shared? devi assicurarti che l'oggetto che stai chiamando sia istanziato e shared per il form chiamante...

:)

bye McSxp

Miku Profilo | Newbie

Ciao Cteniza,

ho provato come dici tu ma non funziona. Nel secondo form non riesco a vedere la funzione GridSource.

Grazie
Miku

Miku Profilo | Newbie

Ciao McSxp,

come si imposta un oggetto shared di tipo griglia?

Grazie
Miku

Cteniza Profilo | Guru

Io ho il sospetto che tu stia ancora cercando di utilizzare le vecchie istruzioni vb6!.
Se dentro un blocco chiamo:
Sub / Function
dim frm As New Form2
frm.Show
End Sub/Function
Al di fuori della sub "frm" (definita come variabile locale) non esiste più
Se sei dentro Form2 e sei richiamato dalla Form1 puoi impostare dei dati sulla Form1 se li hai definiti come "pubblici".
Definire una grid "shared" (e anche public perchè altrimenti non funziona) può essere fatto solo in particolari condizioni (a mio avviso su una datagrid mai).

Miku Profilo | Newbie

Io non riesco ancora a capire come si richiamano gli oggetti di un form da un altro form.
Io non confondo con VB6 la programmazione in C# sono solo confuso visto che sono ancora agli inizi.
Come faccio a far comunicare la griglia del form1 dal form2? Grazie
Miku

McSxp Profilo | Newbie

Puoi provare a creare una property Shared del form.
Questo è in Vb ma credo che se ne possa fare l'equivalente C#

Private Shared frmGlobalForm As Form2
Public Shared Property GlobalForm() As Form2
Get
If frmGlobalForm Is Nothing OrElse frmGlobalForm.IsDisposed Then
frmGlobalForm = New Form2
End If
Return frmGlobalForm
End Get
Set(ByVal Value As Form2)
frmGlobalForm = Value
End Set
End Property

Ad esempio per visualizzare la form dal Form1 dovrai chiamarla con un Form2.GlobalForm.Show(), in questo modo anche i controlli dovrebbero essere espossti shared...

bye

McSxp

Cteniza Profilo | Guru

La prima regola è che ogni form è una classe.
Ciascuna classe può avere membri privati e membri pubblici, i membri privati sono accessibili solo all'interno della classe i membri pubblici sono accessibili sia all'interno che all'esterno della classe.
Nell'area di "scope" dell'oggetto se hai due form form1 e form2 e form2 è chiamata dalla form1 i membri di form2 sono visibili all'interno della form1 solo se dichiarati pubblici.
Viceversa se form1 chiama form2 i membri di form1 sono visibili solo se pubblici e sulla form2 esiste un riferimento all'oggetto di tipo "form1" che ha chiamato form2 (scrivere form1.membro non serve a nulla).
Un modificatore dei membri che permette di scrivere (form1.membro) come si faceva con vb6 è "static", il che vuol dire che il membro ha una sola istanza a prescindere da quante volte sia chiamato.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5