Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Come fare per richiamar una (o un) Form?
Forum - C# / VB.NET - Come fare per richiamar una (o un) Form?

Pagine: [ 1 2 3 4 ] Precedente | Prossimo
Avatar
alpi39 (Normal User)
Pro


Messaggi: 63
Iscritto: 07/03/2008

Segnala al moderatore
Postato alle 15:11
Martedì, 02/09/2008
Buongiorno o Buonasera a seconda se mi leggerete di giorno o di sera.
Sono ancora qui per la richiesta di un aiuto da voi che siete più esperti.
Ancora una volta dimostrerò la mia scarsa conoscenza della programmazione in VB.NET, ma vi prego di essere clementi.
Per mia comodità (quasi certamente sbagliando) continuerò, nel parlare di Form ad usare il femminile.
Il mio programma si compone di 4 Form ognuna inserita all'interno di una cartella con i propri file (Form1.Designer.vb, Form1.resx, ecc.)e con i seguenti nomi:
1)Inizio
2)Forma Calendario
3)Programmazione
4)Prova Data di Oggi
Quella iniziale(Inizio) ha tre radiobutton per la scelta di una delle altre tre.
1ª domanda:
Le Form 2, 3 e 4, possono restare ognuna dentro la propria cartella con i relativi file o debbo sistemarle tutte in un'unica cartella?
Inoltre:
Qual è il modo per richiamare una delle tre Form?
Girovagando per il Forum ho letto che è necessario scrivere
ES.
Per richiamare la Form n°3
Programmazione.show.
Ho provato, ma mi da l'errore "Nome Programmazione non dichiarato"
2ª domanda:
Debbo dichiarare il nome tra le Dim?
Ma come?
Dim Programmazione As....(cosa?)
E per chiudere la n°1 dopo aver richiamato una delle altre 3?
Mille ringraziamenti
alpi39 (Alberto)

PM Quote
Avatar
I)eathBringer (Normal User)
Pro


Messaggi: 127
Iscritto: 11/08/2008

Segnala al moderatore
Postato alle 15:21
Martedì, 02/09/2008
Ho appena controllato dove si trovano le\i form nei miei programmi e ho visto che sono tutti nella stessa cartella.
Per visualizzarle scrivi "nomeform".show()
Per chiuderle "nomeform".close()

PM Quote
Avatar
alpi39 (Normal User)
Pro


Messaggi: 63
Iscritto: 07/03/2008

Segnala al moderatore
Postato alle 21:31
Martedì, 02/09/2008
Testo quotato

Postato originariamente da I)eathBringer:

Ho appena controllato dove si trovano le\i form nei miei programmi e ho visto che sono tutti nella stessa cartella.
Per visualizzarle scrivi "nomeform".show()
Per chiuderle "nomeform".close()



Grazie I)eathBringer per la tua risposta (quasi) immediata, ma vorrei capire ancora meglio.
Mi dici che i tuoi programmi sono tutti nella stessa cartella, ma come?
Sono tutti mescolati fra loro compresi i loro file relativi oppure ogni programma è dentro una propria cartella e tutte le cartelle dentro una cartlla unica?
Perché i miei programmi li tengo così, ognuno nella propria cartella e tutte le cartelle inserite in una cartella unica.
E poi, tu mi scrivi Per richiamare una form debbo digitare "nomeform".show().
Domando:
Il nome della form deve essere messo tra virgolette?
E ancora:
Debbo dimensionare la Form ed eventualmente come?
Dim NomeForm As????
Grazie.
alpi39 (Alberto)

PM Quote
Avatar
Luk3 (Ex-Member)
Guru


Messaggi: 615
Iscritto: 16/08/2008

Segnala al moderatore
Postato alle 21:44
Martedì, 02/09/2008
dim form2 as new form2()
form2.showdialog()

PM Quote
Avatar
alpi39 (Normal User)
Pro


Messaggi: 63
Iscritto: 07/03/2008

Segnala al moderatore
Postato alle 3:22
Mercoledì, 03/09/2008
Testo quotato

Postato originariamente da Luk3:

dim form2 as new form2()
form2.showdialog()



Grazie Luk3
Anche se provando non ho ottenuto niente grazie infinite lo stesso.
Almeno inizio a capire.
Immagino che tu abbia letto la mia richiesta di aiuto e qui allego il codice che dovrebbe richiamare la Form3 che altro non è che un programma per programmare l'uscita in edicola di alcune riviste.
In corrispondenza al RadioButton2 ho inserito le due righe di codice che tu mi hai postato sostituendo form2 con form3 perché il programma con il titolo PROGRAMMAZIONE, è posto nella form3.
Ho dovuto inserire anche Dim Form1 As New Form() perché nella riga di chiusura, mi dava l'errore "Nome non dichiarato".
Ho dovuto togliere anche i numeri 3 e 1 alle righe
Dim Form3 As New Form()
Dim Form1 As New Form()
perché mi dava l'errore "Errore    1    Tipo 'Form3' non definito". Questo, quindi è il codice finito con il quale ho fatto la prova:

Codice sorgente - presumibilmente VB.NET

  1. Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged
  2.         Dim Form3 As New Form()
  3.         Dim Form1 As New Form()
  4.         Form3.ShowDialog()
  5.         Form3.Show()
  6.         Form1.Close()
  7.     End Sub



Prova che mi ha molto sorpreso in quanto, dopo il Debug ho attivato il RadioButton2 per richiamare la Form3 e mi è apparsa la classica Form che appare quando chiami un nuovo progetto e carichi la nuova Applicazione Windows Form. Inoltre, la Form1 non si è chiusa ed è rimasta attiva sotto la nuova Form apparsa.
Per questo, all'inizio di questo post ho detto:
"Almeno inizio a capire".
Grazie comunque per avermi insegnato qualcosa.
alpi39 (Alberto)

Ultima modifica effettuata da alpi39 il 03/09/2008 alle 3:25
PM Quote
Avatar
Luk3 (Ex-Member)
Guru


Messaggi: 615
Iscritto: 16/08/2008

Segnala al moderatore
Postato alle 11:12
Mercoledì, 03/09/2008
Di niente:rotfl:

Tu programmi in VB.NET e non so bene come funzione, se fosse stato C# sarebbe stato necessario

Codice sorgente - presumibilmente C# / VB.NET

  1. Form1 form1 = new Form1();
  2. Form1.ShowDialog();



Form(numero), dipende dal nome del form, se il form si fosse chiamato About sarebbe stato

Codice sorgente - presumibilmente C# / VB.NET

  1. About about = new About();
  2. About.ShowDialog();



Naturalmente ShowDialog si può sostituire con Show().
Dipende se vuoi un form modale o non modale :k:

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 11:19
Mercoledì, 03/09/2008
Allora facciamo un po' di ordine...

Ogni progetto ha una sua cartella, che è inserita in Documenti\Visual Basic 2005\Projects. All'interno di ogni cartella di progetto ci sono tutti i form con le relative risorse. Se ho ben capito quello che chiedi è se si può mettere ogni form in una propria cartella. La risposta è sì. Lo faccio anch'io quando lavoro con applicazioni particolarmente grandi (ad esempio in una delle ultime avevo 2 classi, 3 user control, 18 forms).
Nel solution explorer, clicca col pulsante destro sul nome del progetto scegli Add->New Folder (Aggiungi->Nuova cartella), quindi dalle un nome significativo. Poi trascina col mouse i/le form che vuoi in quella cartella. Per approfondimenti:
http://totem.altervista.org/guida/versione2/E1.php

Se vuoi visualizzare un form ci sono due modi per farlo:
1- Dichiari una nuova variabile. Il tipo di questa variabile corrisponde al nome del form che vuoi fare vedere.
Codice sorgente - presumibilmente C# / VB.NET

  1. Dim F As New Form2


Poi richiami il metodo Show oppure ShowDialog, e non tutti e due insieme. La differenza è che il primo ti consente di accedere anche a tutti gli altri form aperti, mentre il secondo ti obbliga a chiudere l'ultimo form aperto prima di continuare.

2- Usi le istanze predefinite dei form, nel namespace My. Si usa la sintassi My.Forms. seguita dal nome del form:
Codice sorgente - presumibilmente Plain Text

  1. My.Forms.Form2


http://totem.altervista.org/guida/versione2/C6.php

La differenza tra primo e secondo metodo sta nel fatto che nel primo, essendo il form un variabile locale, viene distrutto alla fine del metodo in cui viene eseguito (e quindi quando lo riapri un'altra volta, tutti i controlli saranno immodificati), mentre nel secondo si tiene sempre la stessa istanza di form, quindi se modifichi un controllo, quando lo riapri, quel controllo manterrà le modifiche (ad esempio se metti del testo in una textbox, il testo sarà mantenuto anche quando lo riapri successivamente).
N.B.: questo discorso vale se dichiari la variabile-form in una sub e non a livello di classe.

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 11:22
Mercoledì, 03/09/2008
Testo quotato

Postato originariamente da Luk3:

Di niente:rotfl:

Tu programmi in VB.NET e non so bene come funzione, se fosse stato C# sarebbe stato necessario

Codice sorgente - presumibilmente C# / VB.NET

  1. Form1 form1 = new Form1();
  2. Form1.ShowDialog();



Form(numero), dipende dal nome del form, se il form si fosse chiamato About sarebbe stato

Codice sorgente - presumibilmente C# / VB.NET

  1. About about = new About();
  2. About.ShowDialog();



Naturalmente ShowDialog si può sostituire con Show().
Dipende se vuoi un form modale o non modale :k:


Se questo codice fosse vb.net sarebbe giusto. In C# no.
Codice sorgente - presumibilmente C# / VB.NET

  1. About about = new About();
  2. About.ShowDialog();


Nota che nella seconda riga hai scritto About con la maiuscola, quindi stai indicando il generico tipo "About" e non la variabile "about". La prima riga, quindi, è inutile.

PM Quote
Avatar
Luk3 (Ex-Member)
Guru


Messaggi: 615
Iscritto: 16/08/2008

Segnala al moderatore
Postato alle 11:29
Mercoledì, 03/09/2008
No doubts About, ma in C#

form1 form1 = new form1();
form1.showdialog();

va alla grande;)

PM Quote
Pagine: [ 1 2 3 4 ] Precedente | Prossimo