button.visible = true意外错误

时间:2017-04-10 18:16:53

标签: c# windows

我正在开展一个有计时器的项目。当计时器结束时,我正在做一些指示,并且我将按钮的可见性设置为true。 此行导致错误

"Invalid parameter" in Program.cs at line
Application.Run(new Main());

我不知道如何简单地更改按钮的可见性会导致错误。

以下是代码:

private void timerDuring_Tick(object sender, EventArgs e)
{
    if (timeLeft > 0)
    {
        timeLeft = timeLeft - 1;
        labelTime.Text = timeLeft +"";
    }
    else
    {   
        TimerDuring.Stop();
        labelTime.Visible = false;
        VCapture.Dispose();
        VCapture = null;

        capture.Dispose();

        CamImageBox.Visible = false;

        String pathVideo = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "video.avi");
        WMP.Visible = true;
        WMP.URL = pathVideo;   //Emplacement de la video apres la capture
        WMP.uiMode = "none";
        WMP.settings.setMode("loop", true);
        WMP.Ctlcontrols.play();   // chaque image a recup

        btnDecoupe.Visible = true; // ERROR caused  HERE
        btnReplay.Visible = true;  // ERROR caused  HERE
   }   
}

Visual.cs指示错误的Program.cs:

static class Program
{
    /// <summary>
    /// Point d'entrée principal de l'application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Main());
    }
}

当我将Visibility更改为false时,只有在我将其更改为true时才会抛出错误。

我的表单名称是&#34; Main.cs&#34;

1 个答案:

答案 0 :(得分:0)

您应该只操作UI线程上的控件。你可以致电Control.Invoke()

来做到这一点
Invoke(new Action(() =>
    {
        btnDecoupe.Visible = true;
        btnReplay.Visible = true;
    }));

将它们设置为false也是如此。任何时候你想要在不同的线程中更改控件的某些内容,例如在计时器事件中。