archemi (Normal User)
Pro
Messaggi: 70
Iscritto: 08/01/2014
|
Ciao a tutti, ho un problema che mi sta facendo diventare matta.
Volevo mettere durante il caricamento della base dati uno splash screen di avviso
Ora vorrei metterlo al centro dello schermo ma niente...
il codice è questo:
Codice sorgente - presumibilmente VB.NET |
Public Class frmUtilizzatori Private _SplashForm As New SplashForm Private Sub frmUtilizzatori_Load(sender As Object, e As EventArgs) Handles MyBase.Load Control.CheckForIllegalCrossThreadCalls = False Me.Hide() BackgroundWorker1.RunWorkerAsync() _SplashForm.ShowDialog() End Sub Private Sub BackgroundWorker1_DoWork(sender As Object, e As DoWorkEventArgs) Handles BackgroundWorker1.DoWork accessoDati.caricaUtilizzatori(cbUtilizzatori) End Sub Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted _SplashForm.Close() Me.Show() End Sub End Class Public Class SplashForm Inherits Form Private _Label As New Label With {.Dock = DockStyle.Fill, .Text = "ATTENDERE PREGO", .ForeColor = Color.White} Private Sub SplashForm_Load(sender As Object, e As System.EventArgs) Handles Me.Load Controls.Add(_Label) Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None Me.Width = 200 Me.Height = 50 Me.StartPosition = FormStartPosition.CenterScreen Me.BackColor = Color.Green End Sub End Class
|
|
|
Roby94 (Member)
Guru
Messaggi: 1170
Iscritto: 28/12/2009
|
Premetto che non sono sicuro della risposta ma credo che il problema stia nel fatto che imposti la posizione di avvio quando il form è gia stato avviato.
Le modifiche potresti eseguirle direttamente dal editor visuale cosi andrebbero a finire direttamente nel file design del form, e all'avvio non avresti necessità di modificarne alcuna proprietà, come vedo che stai facendo.
|
|
archemi (Normal User)
Pro
Messaggi: 70
Iscritto: 08/01/2014
|
Alla fine ho risolto chiamando un classico form parametrabile creato direttamente dal designer (così ho potuto gestire meglio la grafica).
Comunque non ho mica capito quale fosse il problema.
Grazie dell'aiuto!
|
|
Roby94 (Member)
Guru
Messaggi: 1170
Iscritto: 28/12/2009
|
Visto che cosi hai risolto sono quasi certo che il problema fosse proprio quello che ti ho segnalato nel post precedente, l'IDE esegue l'inizializzazione dei componenti del form nel costrutto dello stesso, quindi prima di eseguirlo, per tanto la proprietà StartPosition viene presa in considerazione.
|
|
archemi (Normal User)
Pro
Messaggi: 70
Iscritto: 08/01/2014
|
Ho risolto con il form parametrabile ma probabilmente avrei potuto anche modificarlo con le proprietà top e left
Codice sorgente - presumibilmente Plain Text |
Me.Top = CInt((My.Computer.Screen.WorkingArea.Height \ 2) - (Me.Height \ 2))
Me.Left = CInt((My.Computer.Screen.WorkingArea.Width \ 2) - (Me.Width \ 2))
|
Ho provato così per sfizio e il codice completo è:
Codice sorgente - presumibilmente VB.NET |
Imports System.Threading Public Class Form1 Private _SplashForm As New SplashForm Private Sub form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Control.CheckForIllegalCrossThreadCalls = False Me.Hide() BackgroundWorker1.RunWorkerAsync() _SplashForm.ShowDialog() End Sub Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted _SplashForm.Close() Me.Show() End Sub Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork Thread.Sleep(2000) End Sub End Class Public Class SplashForm Inherits Form Private _Label As New Label With {.Dock = DockStyle.Fill, .Text = "ATTENDERE PREGO", .ForeColor = Color.White} Private Sub SplashForm_Load(sender As Object, e As System.EventArgs) Handles Me.Load Controls.Add(_Label) Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None Me.Width = 200 Me.Height = 50 Me.BackColor = Color.Green Me.Top = CInt((My.Computer.Screen.WorkingArea.Height \ 2) - (Me.Height \ 2)) Me.Left = CInt((My.Computer.Screen.WorkingArea.Width \ 2) - (Me.Width \ 2)) End Sub End Class
|
|
|
Roby94 (Member)
Guru
Messaggi: 1170
Iscritto: 28/12/2009
|
Mi sembra che tu proprio non legga i post di risposta.
Va beh il problema è risolto direi che si può chiudere qui.
|
|
archemi (Normal User)
Pro
Messaggi: 70
Iscritto: 08/01/2014
|
Come non leggo? l'ultimo post è il mio...
piccola considerazione:
"Le modifiche potresti eseguirle direttamente dal editor visuale" : non è stato letto il codice altrimenti non avrebbe senso una risposta del genere in quanto la seconda form è aperta da codice e non da editor visuale.
"per tanto la proprietà StartPosition viene presa in considerazione. " ... direi che è proprio l'opposto e il succo del problema, non viene presa in considerazione (neppure se la form che la apre è lei stessa in FormStartPosition.CenterScreen).
ps. per dovere di completezza ho spiegato come ho risolto, postato il codice, e ringraziato comunque per l'aiuto... poi se questo non basta, basta dirlo e mi cancello da sola dal forum
|
|
Ultimo (Member)
Guru
Messaggi: 877
Iscritto: 22/05/2010
|
Postato originariamente da archemi:
Come non leggo? l'ultimo post è il mio...
piccola considerazione:
"Le modifiche potresti eseguirle direttamente dal editor visuale" : non è stato letto il codice altrimenti non avrebbe senso una risposta del genere in quanto la seconda form è aperta da codice e non da editor visuale.
"per tanto la proprietà StartPosition viene presa in considerazione. " ... direi che è proprio l'opposto e il succo del problema, non viene presa in considerazione (neppure se la form che la apre è lei stessa in FormStartPosition.CenterScreen).
ps. per dovere di completezza ho spiegato come ho risolto, postato il codice, e ringraziato comunque per l'aiuto... poi se questo non basta, basta dirlo e mi cancello da sola dal forum |
non vi siete capiti
If ok Then GOTO Avanza else GOTO Inizia
|
|
archemi (Normal User)
Pro
Messaggi: 70
Iscritto: 08/01/2014
|
Sicuramente!
Buon pomeriggio a tutti!
|
|