Come poso fare per creare form leggendo il nome della form da un file?...

mercoledì 25 ottobre 2006 - 09.14

sisco22 Profilo | Newbie

Ciao a tutti.
Qualcuno potrebbe insegnarmi la sintassi corretta per creare istanze WinForm leggendo il nome della form che voglio aprire da un file?
Grazie.

us01739 Profilo | Expert

Cred che l'importante sia sapere come leggere un testo, poi con quello che c'è scritto rieci a fare quello vuoi.

....
Dim tr As TextReader = File.OpenText("C:\file.txt")
Dim line As String = ""
Do
l ine = tr.ReadLine()
Loop While (line <> Nothing)
tr.Close()
.....
Bye Bye

---------------------------------------------------
Roberto Gelmini - Microsoft Certified Professional
www.robertogelmini.com
---------------------------------------------------

sisco22 Profilo | Newbie

Scusami ma non mio sono spiegato bene. Il mio problema non è quello di leggere i valori da un file. Ma come istanziare una Form esempio:

Pseudo codice

sub apriForm(byVal nomeForm as string)

dim frm as New ... nomeForm ... <--- dove nome form è la variabile stringa

with frm
... bla bla bla
... bla bla
.Show()
end with


sicuramente devo convertire il tipo o fare cose del genere però non so come fare
uso vb net 2003 e preferisco tenere settato Option Strict a ON

Grazie per l'aiuto.

us01739 Profilo | Expert

umh...
Immaginavo che non fosse così semplice.
Faccio un paio di test poi ti faccio sapere.
Bye Bye

---------------------------------------------------
Roberto Gelmini - Microsoft Certified Professional
www.robertogelmini.com
---------------------------------------------------

us01739 Profilo | Expert

Per il momento non ho trovato nulla di meglio :-(

Ho visto che per aggirare il problema in molti usano questa tecnica:

....
dim str_form as string = .... inserisci qui il nome del form recuperato dal file
....

Select Case str_form
Case "Form1"
form1.show
Case "Form2"
form2.show
Case Else
form3.show
End Select
....

Capisco che sia poco elegante ma funziona !!
Bye Bye

---------------------------------------------------
Roberto Gelmini - Microsoft Certified Professional
www.robertogelmini.com
---------------------------------------------------

sisco22 Profilo | Newbie

Ti ringrazio, ma è proprio quello che volevo evitare.

Ti spiego il perchè:

L'obbiettivo di tale scelta, cioè di memorizzare in un file i nomi delle WinForm di un applicativo
mi consentiva di rilasciare una versione sempre completa dell'eseguibile e di attivare a secondo della licenza di acquisto più o meno funzionalità dello stesso, semplicemente rilasciando una versione del file contenete le voci di menu e relativo nome form da istanziare a secondo del tipo di licenza aquistata dai miei clienti.

Per spiegarmi meglio installo sempre mioProgramma.exe completo di tutte le sue funzionalità, poi distribuisco solo il file con le voci menu e nomi dei form da istanziare a secondo delle versione che il mio cliente desidera acquistare... Magari esiste una soluzione ancora più semplice di questa... ora non mi viene in mente nulla... mah staremo a vedere se la notte porta consiglio...

Grazie mille. Ciao

freeteo Profilo | Guru

ciao,
quando hai recuperato dal file il nome della form come stringa, puoi usare 1po di Reflection per andare a creare l'istanza della form che vuoi, in questo modo:
[c#] Form zFrm = new Form(); zFrm = (Form)Assembly.GetExecutingAssembly().CreateInstance("miaform");
prova a darci 1occhiata...
ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

us01739 Profilo | Expert

>ciao,
>quando hai recuperato dal file il nome della form come stringa, puoi usare 1po di Reflection >per andare a creare l'istanza della form che vuoi, in questo modo:

>[c#]

>Form zFrm = new Form();
>zFrm = (Form)Assembly.GetExecutingAssembly().CreateInstance("miaform");

>prova a darci 1occhiata...
>ciao.

Come si traduce in VB.net?
Bye Bye

---------------------------------------------------
Roberto Gelmini - Microsoft Certified Professional
www.robertogelmini.com
---------------------------------------------------

sisco22 Profilo | Newbie

Ti ringrazio ma non riesco a fare il porting da C# a vb.net2003
Ciao.

velimie Profilo | Newbie

Imports System.Reflection

Dim frm As Form = [Assembly].GetExecutingAssembly.CreateInstance("WindowsApplication1.frmAlVolo")

sisco22 Profilo | Newbie

Funziona... Grazie mille
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