Cancel form load

c#, forms, winforms

Solution

You can hide the form before loading and then set it back to visible in your `if else` conditions. e.g:

            MyForm myForm = new MyForm();
            myForm.Opacity = 0;
            myForm.Show();

And then:

if (ver == "update")
        {
            if (RemoteFileExists(dlUrl) == true)
            {
               myForm.Opacity = 100;
               ...

            }
            else
                MessageBox.Show("An error occurred. Please try later.");
        }
        else if (ver == "newest")
        {
            MessageBox.Show("You are currently using the newest version.");
            this.Close();
        }
        else
        {
            this.Close();
        }

Problem

I have the following code : This call the second form ``` private void updateToolStripMenuItem_Click(object sender, EventArgs e) { Update fm = new Update(); fm.ShowDialog(); } ``` This is the constructor ``` public Update() { InitializeComponent(); } ``` This is the load ``` private void Update_Load(object sender, EventArgs e) { String ver = checkver(); if (ver == "update") { if (RemoteFileExists(dlUrl) == true) { WebClient webClient = new WebClient(); webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed); webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged); webClient.DownloadFileAsync(new Uri(dlUrl), ""); } else MessageBox.Show("An error occurred. Please try later."); } else if (ver == "newest") { MessageBox.Show("You are currently using the newest version."); this.Close(); } else { this.Close(); } } ``` My problem is, that when the function result is 2 or 3 the form show up for millisecond and then close (flashing). I want the form to not flash. Is it possible? I tried to use this.Hide(), this.Visible = False but nothing helped. EDIT: I put the original code EDIT2: Put more code

Original source