
lorenzoxx89 (Normal User)
Newbie
    
Messaggi: 8
Iscritto: 22/10/2008
|
Ciao a tutti,
vorrei creare un programma in vb .net, in cui le form siano compilate come delle dll e che il progetto "centrale" le richiami visualizzandole in modo da lavorarci.
Tutto ciò vorrei farlo per rendere ovviamente il programma facilmente aggiornabile.
Come compilare le form? e soprattutto come richiamarle(con eventuali passaggi di variabili)?
Grazie in anticipo
|
|

Il Totem (Admin)
Guru^2
    
Messaggi: 3635
Iscritto: 24/01/2006
|
Crei un'applicazione windows form, e modifichi come vuoi la tua form. Dopodiché, nelle proprietà progetto cambi il tipo di applicazione in Class Library, quindi compili, e ottieni una libreria *.dll.
Nel programma principale, cerchi tutte le dll nella cartella che desideri, e controlli che contengano un form, ad esempio in questo modo:
Codice sorgente - presumibilmente VB.NET |
Dim Asm As Assembly = Assembly.LoadFrom(DllPath) Dim Result As Form = Nothing For Each T As Type In Asm.GetTypes If T.BaseType Is GetType(Form) Then Dim TypeName As String = T.FullName Result = Asm.CreateInstance(TypeName) End If Next
|
Se alla fine del ciclo Result non è Nothing, allora contiene il form caricato dalla libreria.
P.S.: serve un "Imports System.Reflection"
|
|

lorenzoxx89 (Normal User)
Newbie
    
Messaggi: 8
Iscritto: 22/10/2008
|
Grazie mille! ma le variabili, vengono condivise come se fosse una form interna al progetto o bisogna richiamarle in qualke modo?
|
|

Il Totem (Admin)
Guru^2
    
Messaggi: 3635
Iscritto: 24/01/2006
|
Quel codice è un estratto da un mio programma, ed era all'interno di una funzione, che restituiva come risultato Result. Credo che l'ideale sarebbe replicare lo stesso meccanismo, preferibilmente includendo il form in una lista globale, o in una variabile globale come dici tu.
|
|

lorenzoxx89 (Normal User)
Newbie
    
Messaggi: 8
Iscritto: 22/10/2008
|
non ci sono riuscito . il fatto è che vengo da vb6 e devo usare questo procedimento per iniziare un progetto importante.
mi potresti cortesemente inviare o dare un link di un piccolo progetto?
anke solo con una form e una dll, con la form ke apre la dll contenente un altra form.
Grazie
|
|

Il Totem (Admin)
Guru^2
    
Messaggi: 3635
Iscritto: 24/01/2006
|
Codice sorgente - presumibilmente VB.NET |
Imports System.Reflection '... Dim DllPath As String = Application.StartupPath & "\Form.dll" Dim Asm As Assembly = Assembly.LoadFrom(DllPath) Dim Result As Form = Nothing For Each T As Type In Asm.GetTypes If T.BaseType Is GetType(Form) Then Dim TypeName As String = T.FullName Result = Asm.CreateInstance(TypeName) Exit For End If Next If Result IsNot Nothing Result.Show() End If
|
|
|

lorenzoxx89 (Normal User)
Newbie
    
Messaggi: 8
Iscritto: 22/10/2008
|
bella li grazie!
|
|

lorenzoxx89 (Normal User)
Newbie
    
Messaggi: 8
Iscritto: 22/10/2008
|
ok quindi ora per passargli delle variabili se ho ben capito potrei far cosi: creo una classe e la metto in una dll. questa dll la importo sia nella form ke verra compilata come dll, sia nella form principale.
sarebbe giusto fare così?
---
non funziona ma ineffetti è logico.. le dikiarazioni vanno bene ma ora manca un metodo per passare le variabili .. help
Ultima modifica effettuata da lorenzoxx89 il 25/10/2008 alle 2:19 |
|

Il Totem (Admin)
Guru^2
    
Messaggi: 3635
Iscritto: 24/01/2006
|
Non ho ben capito il tuo problema.
|
|