Newsgroup: it.comp.lang.visual-basic
Titolo: Splash form

Ciao,
sto lavorando ad un progetto VB 2005 Express e ho inserito una SplashScreen, però quando avvio il programma anzichè comparire prima la splash e poi la prima form, compaiono insieme, come mai?
Nelle proprietà ho messo :
Form di avvio : Mia form
Modalità di arresto : Alla chiusura del form di avvio
Schermata iniziale : Mia splash
C'è altro che devo impostare?
grazie
Marco

Nessuno sa il motivo?
con VB 2010 funziona correttamente ma io devo usare il 2005.....
Marco

credo sia il comportamento standard. Personalmente preferisco gestire 
tutto io attraverso una estensione dell'applicazione.
Definisci un tuo oggetto Applicazione che, ad esempio, mentre carica una 
serie di risorse mostra uno splash e poi quando tutto è pronto 
visualizza il form principale.

Cioè metto una form intermedia nascosta della durata della spash che apre poi la main form?
Di quale estensione parli?
puoi spiegare meglio la cosa?
grazie
Marco

 prima form, compaiono insieme, come mai? Nelle proprietà ho messo :
ZAC
Perchè tu hai errato su COSA fa "in automatico" una splash screen 
dentro VisualStudio.
 
Fai un semplice progetto con 2 form una chiamata form1 ed una splash
nella form1 io ho messo una listboxx che riempio nel load
Public Class Form1
 
in pratica questo codice
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles MyBase.Load
        ListBox1.Items.Add(Now.ToLongDateString)
        ListBox1.Items.Add(Now.ToLongTimeString)
    End Sub
End Class
 
compila e lancia
a seconda dell'incasinamento del tuo hard disk, della tua ram e della 
potenza della cpu...quasi istantaneo...la splash e poi senza far nulla 
la form!
 
ED ECCO L'ARCANO
una splash form viene usato per "intrattenere" l'utente mentre accade 
qualcosa. Una volta che tutto è compiuto...sparisce!
non ci credi?
Modifica e ricompila e lancia con questa "leggera" modifica
Public Class Form1
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles MyBase.Load
 
        System.Threading.Thread.Sleep(400000)
 
        ListBox1.Items.Add(Now.ToLongDateString)
        ListBox1.Items.Add(Now.ToLongTimeString)
    End Sub
End Class
 
....ammappetelo quanto sta attiva la splash form!
La splash form sta attiva NEL MENTRE che carica la form principale!
 
però tu desidereresti una splash form per fare anche altre 
inizializzazioni richiamando eventi ed oggetti tuoi?
 
hai 2 strade
1)
una classica alla vb6: Crei un modulo con una procedura SUB MAIN e li 
dentro mettio tutto quello che vuoi....richiamerai le form modali e non 
e le inizializzazioni che vuoi. nelle impostazioni del progetto 
dichiari come start la sub main che sarà apparsa fra le opzioni!
ATTENZIONE: ti appare se togli la spunta ad "Attiva Framework 
Applicazione
 
2) Una "nuova" senza disabilitare nulla.....sfrutta gli eventi 
applicazione!
Accanto a "schermata iniziale" vedi un misterioso pulsante "Visualizza 
eventi applicazione" ???
Premilo!
adesso hai a disposizione delle "trap" agli eventi iniziali che puoi 
sfruttare!
ad esempio:
startup
 
Namespace My
 
    ' I seguenti eventi sono disponibili per MyApplication:
    '.....
 
    Partial Friend Class MyApplication
 
        Private Sub MyApplication_Startup(ByVal sender As Object, ByVal 
e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) 
Handles Me.Startup
            Dim t As Form
            t = New CustomSplash
            t.ShowDialog()
        End Sub
    End Class
 
 
End Namespace
 
 
Che accade adesso....????
L'applicazione si avvia MA PRIMA di arrivare a qualsiasi caricamento 
form....passa dalla tua routine...che carica una form MODALE....e 
finchè non la chiudi....non fà altro.....è un uso cretino!
Li sarebbe un buon posto per controllare connessioni a 
server....recuperare default...inizializzare oggetti dati!....e fornire 
SUCCESSIVAMENTE alla visualizzazione info all'utente se tutto è ok o se 
intervenuto qualche errore!!!
 
Spero di essere stato chiaro!
 
 
testato tutto sotto vs2010 FW4
Ciao!
 
-- 
----- Italliaaaaa 3227! -----
Ti prego, ti prego, non ci uccidere. Ti prego baby, lo sai che ti amo. 
Non avrei mai voluto lasciarti, non è stata colpa mia. Davvero, sono 
sincero. Quel giorno finì la benzina. Si bucò un pneumatico. Non avevo 
i soldi per il taxi! Il mio smoking non era arrivato in tempo dalla 
tintoria! Era venuto a trovarmi da lontano un amico che non vedevo da 
anni! Qualcuno mi rubò la macchina! Ci fu un terremoto! Una tremenda 
inondazione! Un'invasione di cavallette!
John Belushi [da "Blues Brothers"]
 
 

Penso che tu sia stato chiaro, la prossima settimana proverò il tuo codice che oggi mi hanno dato altri lavori...
ti farò sapere se tutto è ok!
 
per ora grazie e buon week end
Marco

 Cioč metto una form intermedia nascosta della durata della spash che apre poi la main form?

OOP. Una applicazione č un oggetto che contiene ciň che ti serve.
Parlo di estensione nel senso che dovrai fare una tua gerarchia di 
oggetti. E' molto complessa la cosa e dipende da quanto sei esperto.
In alternativa sub main e fai come suggerito da altri.

Ciao,
 
per quello che dovevo fare io è bastato inserire il codice :
 
System.Threading.Thread.Sleep(3500) 
 
e ora compare la Splash prima di avviare l' applicazione.
 
Terrò presente tutto il resto del codice per applicazioni future.
grazie 1000
Marco

Dopo dura riflessione, Marco75 ha scritto :

E' UNA ERESIA GRANDISSIMA....fai un po come ti pare....ma è sbagliato 
concettualmente!
Perchè costringi la tua applicazioen A NON FAR NULLA solo allo scopo di 
mostrare una finestra che come dici tu "non serve a nulla".
Lancia la tua applicazione il "più presto prima possibile"....poi 
mostra la tua form ringraziamenti copyrigt o quello che è (al limite 
metti li un timer, dentro la form, che dopo x secondi la chiude)
...poi fai tu....il mondo è pieno di gente che usa le forchette per 
grattarsi la schiena!
 
-- 
----- Italliaaaaa 3227! -----
Please, visits website, but please visit Italy. We’re t’best country in 
the world in terms of: Culture, Landscapes, Arts, History, Cities, 
Villages, Beautiful countryside, seaside, mountains. That is Italy. You 
know, perhaps, you dreaming about. But please, visit or country. We 
will welcome you warmly and with a better organization.
(Francesco Rutelli Video a: 
http://www.martek.it/dblog/mostraVideo.asp?p=/public/dblog/Rutelli1.wmv
 
)