Laden...

Label in SplashScreen wird falsch dargestellt

Erstellt von Thomas B vor 13 Jahren Letzter Beitrag vor 13 Jahren 9.301 Views
T
Thomas B Themenstarter:in
223 Beiträge seit 2006
vor 13 Jahren
Label in SplashScreen wird falsch dargestellt

Hallo Comm,

Ich habe ein Problem mit Labels bei meinem simplen SplashScreen Form.
Die beiden Labels werden als weiße Balken angezeigt, und sobald der Timer rum ist, werden diese kurz vor dem Schließen des Forms richtig angezeigt. Woran kann das liegen?


public class SplashScreen : Form
    {
        private Label mLblTitle;
        private Label mLblVersion;
        private Timer mTmrDuration;

        public SplashScreen(int pDuration, string pTitle, string pVersion)
        {
            this.SetupForm();
            this.SetupLabels(pTitle, pVersion);
            this.SetupTimer(pDuration);
            this.AddControls();
        }

        private void SetupForm()
        {
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            this.Size = new Size(Properties.Resources.logo.Width, Properties.Resources.logo.Height);
            this.StartPosition = FormStartPosition.CenterScreen;
            this.ShowInTaskbar = false;
            this.BackgroundImage = Properties.Resources.logo;
            this.SetTopLevel(true);
        }

        private void SetupLabels(string pTitle, string pVersion)
        {
            this.mLblTitle = new Label();
            this.mLblTitle.Text = pTitle;
            this.mLblTitle.Font = new Font("Arial", 16F, FontStyle.Regular, GraphicsUnit.Point, ((byte)(0)));
            this.mLblTitle.Location = new Point(15, 50);
            this.mLblTitle.BackColor = Color.Transparent;
            this.mLblTitle.AutoSize = true;
            this.mLblTitle.Visible = true;
            this.mLblTitle.Show();

            this.mLblVersion = new Label();
            this.mLblVersion.Text = pTitle;
            this.mLblVersion.Font = new Font("Arial", 9.75F, FontStyle.Regular, GraphicsUnit.Point, ((byte)(0)));
            this.mLblVersion.Location = new Point(645, 538);
            this.mLblVersion.BackColor = Color.Transparent;
            this.mLblVersion.AutoSize = true;
            this.mLblVersion.Visible = true;
            this.mLblVersion.Show();
        }

        private void SetupTimer(int pDuration)
        {
            this.mTmrDuration = new Timer();
            this.mTmrDuration.Tick += new EventHandler(this.TmrDuration_Tick);
            this.mTmrDuration.Interval = pDuration;
            this.mTmrDuration.Start();
        }

        private void AddControls()
        {
            this.Controls.Add(this.mLblTitle);
            this.Controls.Add(this.mLblVersion);
        }

        private void TmrDuration_Tick(object sender, EventArgs e)
        {
            this.mTmrDuration.Stop();
            this.Close();
        }

Aufgerufen wirds dann in einer zweiten Anwendung und mit Show() angezeigt. Ich hatte das Ganze zuerst per Designer gebastelt und damit lief es. Diese Variante ist nun ohne Designer erstellt und dort taucht das oben beschriebene Problem auf.

Gruß Thomas

795 Beiträge seit 2006
vor 13 Jahren

Hi, sieh mal hier: [FAQ] Warum blockiert mein GUI?

Vielleicht ist ja auch mein SplashScreen was für dich.

Gruß, Christian.

`There are 10 types of people in the world: Those, who think they understand the binary system Those who don't even have heard about it And those who understand "Every base is base 10"`
T
Thomas B Themenstarter:in
223 Beiträge seit 2006
vor 13 Jahren

Hi,

Bist du dir sicher, dass es daran liegt? Der alte SplashScreen wurde an der selben Stelle aufgerufen und dort gab es das Problem nicht. Der einzige Unterschied ist meiner Meinung nach, dass ich den alten Splash im Designer erstellt habe und den Neuen komplett selbst geschrieben habe.

Danke für den Link, ich möchte aber was eigenes benutzen. 😃

Gruß Thomas

€:
Nach dem testweisen Einbau eines Threadings funktionierte es, was nicht erklärt, warum es jetzt blockiert, wo es vorher nicht so war.
Ich nutze nun dieses Blockieren um den Splash entsprechend lange anzuzeigen, bis die Daten geladen sind, klappt gut. 😄