2017-04-10 14 views
-3

私はタイマーを持っているプロジェクトに取り組んでいます。タイマーが終了したら、私はいくつかの指示をしており、ボタンの表示を真に設定しています。 エラーbutton.visible = 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 Studioで表示されるの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に、エラーがスローされますのみ私はそれを真に変えるとき。

私のフォームの名前は、あなたが唯一のUIスレッド上のコントロールを操作する必要があります

+1

どのタイマーを使用していますか? –

+0

c#TimerDuringというタイマーコントロール –

+0

Windows.Forms.Timer、System.Threading.TimerまたはSystem.Timerですか? –

答えて

0

「Main.cs」です。 Control.Invoke()と呼ぶことでできます:

Invoke(new Action(() => 
    { 
     btnDecoupe.Visible = true; 
     btnReplay.Visible = true; 
    })); 

falseを設定する場合も同じ操作を行います。タイマーイベントなど、別のスレッドのコントロールに関する何かを変更したいときはいつでも。

関連する問題