Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Form esterni all'exe
sabato 15 gennaio 2005 - 10.50
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
kevin
Profilo
| Junior Member
73
messaggi | Data Invio:
sab 15 gen 2005 - 10:50
Ciao a tutti,
vorrei sapere se è possibile fare in modo che tutti i form che sono in un progetto visual basic .net, possano essere esterni all'exe e scritti su file esterni.
Vorrei fare questo per futuri aggiornamenti, visto che la mia applicazione e un'exe di 7mb, non vorrei mandare un file di 7mb per ogni aggiornamento che faccio alla mia applicazione, ma magari se aggiorno un form mando solo quello.
Come posso fare?
Grazie 1000
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
sab 15 gen 2005 - 11:07
E' quello che ho fatto nell'applicazione che sto sviluppando:
Ho preso le form, e le ho messe su tante dll divise per categoria.
Carico le dll con la reflection, successivamente ciclo sui tipi (ho messo un attributo sulle form) e posso così referenziare e attivare le form con Activator.CreateInstance
kevin
Profilo
| Junior Member
73
messaggi | Data Invio:
sab 15 gen 2005 - 11:09
scusami ma nn ho prorio idea di come posso inserire un form in una dll,
potresti spiegarmelo, o magari rimandarmi ad una guida.
Grazie ancora
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
sab 15 gen 2005 - 11:27
Apri nuovo progetto windows forms
Vai nelle proprietà del progetto e cambia il tipo di destinazione
in dll
kevin
Profilo
| Junior Member
73
messaggi | Data Invio:
sab 15 gen 2005 - 11:33
lo so che sono un rompi:)
Adesso riesco a crearlo, mi faresti un'esempio di codice che tu usi per importare e aprire un form sulla dll?
Grazie ancora
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
sab 15 gen 2005 - 11:55
Aprire una dll -> guarda LoadAssembly
Fai un ciclo sui moduli contenuti (For Each mymod As System.Reflection.Module In asm.GetModules)
Fai un cilo sui tipi contenuti su ciascun modulo (For Each t As Type In mymod.GetTypes)
Controlli se si tratta di una form (io ho messo un attributo con la relativa classe che battezza la form)
If t.BaseType = GetType(System.Windows.Forms.Form) Then
Dim myattribute As Object() = t.GetCustomAttributes(GetType(ProgrammiAttribute), True)
Puoi attivare la form con
Dim frm As Form = CType(Activator.CreateInstance(t), Form)
frm.Show
kevin
Profilo
| Junior Member
73
messaggi | Data Invio:
sab 15 gen 2005 - 13:52
Sono riuscito ad aprire un form di esempio dalla mia applicazione,
solo che se provo a prendere un form dalla mia applicazione e lo inserisco in una dll, non riesco a compilarla perche nel form che ho inserito nella dll ci sono dei tasti che linkano ai form che sono nell'applicazione,
come posso referenziarli dalla dll.
ho provato a fare aggiungi riferimento nella dll ma nn me lo fa fare giustamente perche il riferimento e un exe.
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
sab 15 gen 2005 - 14:44
E' ovvio che il gruppo di form / classi / oggetti che hai nel tuo progetto "dll" deve essere compilabile (come dll) in modo autonomo per cui se utilizza oggetti come usercontrol in comune con altre dovresti rendere "dll" autonomi anche gli oggetti richiamati.
Quindi se main ha un oggetto "o" come riferimento
la form su dll non può avere main come riferimento ma puntare direttamente all'oggetto "o" in modo autonomo
Main potrebbe anche non avere nessun riferimento alla form su dll in quanto non gli serve per istanziare le sue forms
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
dom 16 gen 2005 - 10:01
Posso aggiungermi anche io confermando che la soluzione di Cteniza è ottima.
Infatti è un buonissimo esempio di come si possono estendere le applicazioni. E' sufficiente poi deployare la DLL aggiornata o aggiuntiva per aggiungere funzionalità all'applicazione madre.
Riguardo al file da 7 mega mi sembra un po' tanto. Come mai è così grosso , hai inserito delle immagini nelle Forms ?
ciao
david
kevin
Profilo
| Junior Member
73
messaggi | Data Invio:
dom 16 gen 2005 - 11:18
si è pieno di grafica!
Grazie a tutti
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
dom 16 gen 2005 - 12:34
Ti consiglio di evitare di appesantire gli exe in questo modo.
Meglio posizionare le immagini su disco e caricarle a runtime oppure in un'altra DLL sottoforma di risorsa.
ciao
david
kevin
Profilo
| Junior Member
73
messaggi | Data Invio:
lun 17 gen 2005 - 09:15
ho inserito come risorsa un'immagine, con nome main.jpg,
come posso importarla in una picturebox come sfondo?
Andy
Profilo
| Senior Member
487
messaggi | Data Invio:
lun 17 gen 2005 - 09:19
Ciao..non includere l'immagine nelle risorse, lascia un file esterno al programma, e l'immagine la carichi Runtime all'apertura della tua applicazione.
Torna su
Stanze Forum
Elenco Threads
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 !