我正在开展一个有计时器的项目。当计时器结束时,我正在做一些指示,并且我将按钮的可见性设置为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;
答案 0 :(得分:0)
您应该只操作UI线程上的控件。你可以致电Control.Invoke():
来做到这一点Invoke(new Action(() =>
{
btnDecoupe.Visible = true;
btnReplay.Visible = true;
}));
将它们设置为false也是如此。任何时候你想要在不同的线程中更改控件的某些内容,例如在计时器事件中。