Domanda

For some reason an ArgumentException saying 'Parameter is not valid.' at Application.Run gets thrown when executing either this:

private void utilsTabBtn_Click(object sender, EventArgs e)
{
    utilitiesPanel.BringToFront();
}

or this:

private void utilsTabBtn_Click(object sender, EventArgs e)
{
    utilitiesPanel.Visible = true;
    accountcreatorPanel.Visible = false;
    aboutPanel.Visible = false;
}

after executing RequestCaptcha in this code:

private void accountcreatorStartBtn_Click(object sender, EventArgs e)
{
    accountcreatorStopBtn.Enabled = true;
    accountcreatorStartBtn.Enabled = false;
    recaptchaSolveBox.Enabled = true;
    recaptchaContinueBtn.Enabled = true;
    recaptchaRenewBtn.Enabled = true;
    MinimalID = accIndexOne.Value;
    CurrentID = MinimalID - 1;
    MaximalID = accIndexTwo.Value;
    RequestCaptcha();
    recaptchaBox.SizeMode = PictureBoxSizeMode.StretchImage;
}

where RequestCaptcha is:

private void RequestCaptcha()
{
    LatestKey = ((new Random()).Next() * (new Random()).Next());
    statusLbl.Text = "Captcha key: " + LatestKey.ToString();
    recaptchaBox.Image.Dispose();
    using (WebClient w = new WebClient())
    {
        w.DownloadFile(string.Format(RequestURL, LatestKey), Environment.CurrentDirectory + "/latestCaptcha.jpg");
    }
    try
    {
        recaptchaBox.Image = Image.FromFile(Environment.CurrentDirectory + "/latestCaptcha.jpg");
    }
    catch (Exception ex)
    {
        recaptchaBox.Image = recaptchaBox.ErrorImage;
        MessageBox.Show(ex.Message, this.Text + " - Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}

ALL controls, with exception to the buttons ending with 'TabBtn' and the panels, are in the panel I'm trying to hide.

È stato utile?

Soluzione

Inside RequestCaptcha() method you are actually disposing the image which is still being used by picture box.

recaptchaBox.Image.Dispose();

above line is not valid. alternatively you could set

pictureBox1.Image = null;

or if you intend really to dispose the image you can do the following

Image image = recaptchaBox.Image;
recaptchaBox.Image = null;
image.Dispose();

that should solve your problem :)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top