Passare riferimenti tra diverse sub di 2 librerie

domenica 17 febbraio 2013 - 12.46
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Windows 7  |  Windows Vista  |  Windows XP  |  Visual Studio 2010  |  Visual Studio 2008  |  SQL Server 2008 R2  |  SQL Server Express  |  MySQL 5.5  |  MySQL 5.1  |  MySQL 5.0

avarrati Profilo | Newbie

Salve a tutti,
avrei un piccolo problema in questione:
ho una libreria1 che chiama la libreria2 passando 3 oggetti
nella libreria2 ci son delle sub che avrebbero bisogno di modificare un paramentro di uno quei 3 oggetti..
come poz fare?
es. libreria1
private sub modifica handles buttone.click
dim lib2 as new lib2.lib2
lib2.show
lib2.avvia(param1, param2, param3)
end sub

libreria2
public avvia (byval p1 as integer, param2 as sqlcomman, param3 as datagridview)
...
end public

private sub mod handles mod.click
param2.parameters(@visible).value='y'
[ci sono altri 184 parametri che dovrebbero essere modificati]
end private

ovviamente l'ultima sub mod mi fa errore.. come fare?
grazie a tutti

luigidibiasi Profilo | Guru

>public avvia (byval p1 as integer, param2 as sqlcomman, param3 as datagridview)

usando byref al posto di byval passi i riferimenti

Luigi Di Biasi


http://www.dibiasi.it/
http://netsell.dibiasi.it - ecomm software -
http://blogs.dotnethell.it/luigidibiasi/
http://yadamp.unisa.it/ - YADAMP CMS -

avarrati Profilo | Newbie

il problema è diverso..
l'errore che mi da è che param2 non esiste, in quanto esiste nella sub1, ma non nella sub2....
in allegato un estratto del file del progetto

Vinsent Profilo | Senior Member

I "parametri" sono come delle variabili dichiarate all' interno di un metodo..."vivono" solo all' interno di quest' ultimo...
Il valore di una variabile dichiarata all' interno di una Sub non può essere letto/impostato dall' esterno mentre il valore di un Parametro può essere SOLO impostato richiamando la Sub che lo dichiara, cioè non devi considerare il "parametro" come una variabile accessibile direttamente...non so se ho spiegato bene il concetto...
Quindi, se hai decifrato quanto sopra, o richiami la Sub con i nuovi parametri o dovresti dichiarare delle variabili/proprietà a livello della Classe e lavorare su queste.
Ciao

avarrati Profilo | Newbie

Ciao,
grazie della risposta. Quanto mi hai spiegato è chiarissimo! (hai confermato i miei 'sospetti'),
ma volendo optare di non dichiarare delle variabili nella classe (di fatti è per questo che li ho passati come paramentri, proprio per evitare di ridichiararli nella classe), come potrei fare per ripassarli nella sub? lo farei volentieri,ma non so come fare (nel mio caso specifico).
cioè non so se hai visto il codice, ma come poz ripassare i parametri alla nuova sub, dato che la nuova sub è associato l'evento click di un pulsante?
poz prelevare i paramentri (o ripassarli) quando si genera l'evento click di un pulsante?
grazie ancora di nuovo

saluti

Vinsent Profilo | Senior Member

Da quanto ho capito, il problema non è il "button.click" ma il fatto che dovresti ripassare TUTTI i parametri richiesti e non solo quelli modificati...dato che non puoi ottenerli dalla Sub originale.
Potresti creare delle Sub per ogni parametro e ridurle usando array o dictionary ma penso sia uno sbattimento inutile.
Non vedo alternativa se non quella di usare variabili/proprietà.
Per quello che sò...di più non so dirti....

avarrati Profilo | Newbie

yes esatto! il mio problema è proprio quello di evitare di ripassare tutti i parametri.. :(
cmq grazie :)

Vinsent Profilo | Senior Member

Un paio d' ore fa...stavo pensando al "pensatoio"...e dopo la pizza di ieri (salame "rovente",zola,cipolla,olio piccante) ti lascio immaginare per quanto tempo ho "pensato".......
Potresti usare una sola variabile di tipo Array in cui aggiungere i "parametri", una Sub di "avvio" in cui la popoli e richiami un' altra Sub che lavora sugli elementi dell' array. Quando devi modificare un "parametro" basta agire sull' elemento dell' array e richiamare la Sub che usa i parametri, il difetto è che devi ricordati l' indice da modificare....
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5