Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. 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? - Pagina 2

Pagine: [ 1 2 3 4 ] Precedente | Prossimo
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 11:50
Mercoledì, 03/09/2008
Ti faccio notare che sia il tipo che il nome della variabile hanno la minuscola. In realtà stai utilizzando solo una delle due, quindi una riga è superflua.

PM Quote
Avatar
Luk3 (Ex-Member)
Guru


Messaggi: 615
Iscritto: 16/08/2008

Segnala al moderatore
Postato alle 11:57
Mercoledì, 03/09/2008
Si questo è vero, ma non avevo voglia di premere caps lock  :rotfl::rotfl::rotfl:

PM Quote
Avatar
alpi39 (Normal User)
Pro


Messaggi: 63
Iscritto: 07/03/2008

Segnala al moderatore
Postato alle 17:07
Mercoledì, 03/09/2008
Testo quotato

Postato originariamente da Il Totem:

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

N.B.: questo discorso vale se dichiari la variabile-form in una sub e non a livello di classe.



Ciao Totem e ciao anche a Luk3.
Mamma mia quanto è complicato tutto questo discorso.
Quasi quasi mi fa venire la voglia di rinunciare ad imparare, ma, poiché il mio programma l'ho quasi terminato, desidero portarlo avanti fino in fondo.
ho provato a fare ciò che tu, Totem mi consigli, cioè:

1- Dichiari una nuova variabile. Il tipo di questa variabile corrisponde al nome del form che vuoi fare vedere.
Dim F As New Form2

L'ho fatto con il seguente risultato:

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 FORMA_CALENDARIO As New Form2
  3.         Dim PROGRAMMAZIONE As New Form3
  4.         Dim VEDI_PROGRAMMA As New Form4
  5.  
  6.         Form3.Show()
  7.         Form1.Close()
  8.     End Sub



Ovviamente ometto tutte le altre Private Sub per non rubare spazio.
Per tutte e tre le Form mi presenta questo errore:

Tipo 'Form2' non definito.

Proseguendo poi lungo la Private Sub(come puo vedere), ho inserito:

Codice sorgente - presumibilmente Plain Text

  1. Form3.Show()
  2.         Form1.Close()



E qui mi segnala altri 2 errori:
Il primo si riferisce a

Form3.Show()

e dice:

Codice sorgente - presumibilmente Plain Text

  1. Nome 'Form3' non dichiarato.



Eppure, come si può vedere chiaramente più in alto, la Form3 è dimensionata insieme con le altre due.
Il secondo errore poi, che mi segnala, si riferisce a

Form1.Close()

e dice:

Codice sorgente - presumibilmente Plain Text

  1. 'WindowsApplication1.Form1' non può fare riferimento a se stesso mediante la sua istanza predefinita.



La Form1 è quella del programma che deve richiamare le altre Form e una volta che ne ha richiamata una, deve sparire per non avere due Form attive sul computer.
Poi, nel tuo Post mi dici:

Codice sorgente - presumibilmente C# / VB.NET

  1. 2- Usi le istanze predefinite dei form, nel namespace My. Si usa la sintassi My.Forms. seguita dal nome del form:
  2. My.Forms.Form2



Io le ho preparate

Codice sorgente - presumibilmente Plain Text

  1. My.Forms.Form2
  2.     My.Forms.Form3
  3.     My.Forms.Form4



Ma, scusa la mia immensa ignoranza, non so dove trovare "le istanze predefinite dei form", per cui non so dove inserirle.
Ancora una volta chiedo scusa per l'ignoranza che evidenzio, ma il desiderio di portare a termine questo mio programma è così grande che anche di notte, credimi, penso e sogno i problemi che lui mi propone.
Ringrazio te e Luk3 per la pazienza dimostrata nei miei confronti e domando:
Ritieni che riuscirò a portare a termine l'impresa?
Io spero immensamente di sì.
Mille grazie.
alpi39 (Alberto)

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 18:26
Mercoledì, 03/09/2008
Ma a me pare così ovvio: se ti dice che form3 non è dichiarato, significa che non esiste. Quindi nel tuo progetto non c'è nessun form di nome "Form3", perciò perchè usarlo?

Forse non capisci cosa si intende per tipo.
Ammettiamo di avere questo form:
Codice sorgente - presumibilmente C# / VB.NET

  1. Public Class UnMioForm
  2. '...
  3. End Class


Per farlo vedere si usa:
Codice sorgente - presumibilmente C# / VB.NET

  1. Dim F As New UnMioForm
  2. F.Show()


oppure:
Codice sorgente - presumibilmente Plain Text

  1. My.Forms.UnMioForm


Le istanze predefinite dei form sono tutti i membri di My.Forms, che tu NON devi e NON puoi dichiarare, perchè, essende predefinite, sono già impostate. Te l'ho scritto, non pretendevo che lo sapessi: te lo stavo spiegando.

Ah, e quando ti dice che non puoi richiamare Form1 da se stesso, basta usare Me al suo posto:
Codice sorgente - presumibilmente Plain Text

  1. Me.Close()


Ultima modifica effettuata da Il Totem il 03/09/2008 alle 18:28
PM Quote
Avatar
alpi39 (Normal User)
Pro


Messaggi: 63
Iscritto: 07/03/2008

Segnala al moderatore
Postato alle 14:42
Giovedì, 04/09/2008
Testo quotato

Postato originariamente da Il Totem:

Ma a me pare così ovvio: se ti dice che form3 non è dichiarato, significa che non esiste. Quindi nel tuo progetto non c'è nessun form di nome "Form3", perciò perché usarlo?




Ciao Totem
So che tu sei un maestro in VB.NET e quel che dici, per me è verità.
Ma in questo caso credo sia il computer che non dice la verità o, quasi certamente io non lo metto in condizioni di controllare che sia vero, perché, come dimostrano queste poche righe di codice, la Form3 esiste:

Codice sorgente - presumibilmente VB.NET

  1. Imports System.IO
  2. Public Class Form3
  3.  
  4.     Dim NomeTestata As String = ""
  5.     Dim Periodico As String = ""



E la Form3 è quella dove è sviluppato il programma PROGRAMMAZIONE come puoi controllare d un mio post precedente.
Quasi certamente, anzi, certamente sono io, incapace, a digitare il codice come deve essere digitato e allora, ti posto il codice relativo al RadioButton2 chè quello che deve richiamare la Form3

Codice sorgente - presumibilmente VB.NET

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



Mi sembra di aver fatto le cose come tu mi hai consigliato o, forse c'è qualcosa di inesatto?
E l'errore che mi segnala è:

Codice sorgente - presumibilmente Plain Text

  1. Errore  1       Tipo 'Form3' non definito.



E poi, un'altra cosa:
Il programma si compone di 29 righe e lui (il programma) mi segnala un altro errore:

Codice sorgente - presumibilmente Plain Text

  1. Errore  2       Prevista espressione.
  2.  (riga)223      (Colonna)26



Ripeto che il programma è composto da sole 29 righe e la riga 223 NON ESISTE.

Grazie per la tua pazienza.
alpi39 (Alberto)

Ultima modifica effettuata da alpi39 il 04/09/2008 alle 15:03
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 11:30
Venerdì, 05/09/2008
Sì, riga 223 ma di quale file? Stai a vedere che ti indica l'errore su form3.vb e che a causa di quello non può riconoscere la classe form3 come esistente.
Controlla in quale file è l'errore, e poi metti la riga corrispondente qua sul forum.

PM Quote
Avatar
alpi39 (Normal User)
Pro


Messaggi: 63
Iscritto: 07/03/2008

Segnala al moderatore
Postato alle 14:00
Venerdì, 05/09/2008
Testo quotato

Postato originariamente da Il Totem:

Sì, riga 223 ma di quale file? Stai a vedere che ti indica l'errore su form3.vb e che a causa di quello non può riconoscere la classe form3 come esistente.
Controlla in quale file è l'errore, e poi metti la riga corrispondente qua sul forum.



Ciao Totem
Anch'io, nella mia ignoranza avevo fatto questa supposizione e sono andato a controllare la riga 223 della Form3, ma in quella riga c'è una semplice operazione di assegnazione ad una variabile. Questo, il codice della riga:

Codice sorgente - presumibilmente Plain Text

  1. X = Anno



inoltre, l'errore che il programma mi segnala alla riga 223, si troverebbe alla colonna 26, mentre questa riga, compresi gli spazi alla sua sinistra, ha soltanto 17 colonne.
Inoltre, il programma che mi segnala l'errore (il quale programma, ripeto, ha soltanto 29 righe di codice), (nell'elenco degli errori), sotto la colonna con la voce "File" mi indica chiaramente che l'errore è nella Form1.vb (la sua Form), ma alla destra dell'elenco, sotto la colonna "Progetto", non c'è nessun nome del progetto.
Non contento, sono andato a controllare anche le altre 2 Form (la Form2 e la Form4) e la Form4 ha soltanto 104 righe di codice mentre la Form2 alla riga 223 ha questa ulteriore riga di assegnazione:

Codice sorgente - presumibilmente Plain Text

  1. Giorno = Str(X) + " " + Mese



dove assegna alla variabile Giorno il valore di X + uno spazio + il nome del Mese. Niente, quindi, che abbia bisogno di un'espressione.
Per me, è un'incognita che non riesco a risolvere.
E per queste altre righe di codice per la "definizione" della Form3, cosa ne pensi?
è corretta?

Codice sorgente - presumibilmente VB.NET

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



Grazie mille nuovamente Totem dell'assistenza che mi dai.
alpi39 (Alberto)

Ultima modifica effettuata da alpi39 il 05/09/2008 alle 14:11
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 21:23
Venerdì, 05/09/2008
Form3 è già definita, lì stai dichiarando una variabile.

Guarda, basta che fai doppio click sull'errore e ti apre automaticamente il documento corrispondente alla linea data.

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